6

iPhoneのペーストボードにプレーンテキストを入れようとしています。次のコードは機能していないようです。

UIPasteboard *pboard = [UIPasteboard generalPasteboard];
NSString *value = @"test";
[pboard setValue: value forPasteboardType: @"public.plain-text"];

問題は PasteBoard 型の引数にあると思います。通過し@"public.plain-text"ても何も起こりません。コンパイラを渡すkUTTypePlainTextと、互換性のないポインター型について不平を言うが、クラッシュせず、何も起こらない。を使用するには、ドキュメントには記載されていない とのkUTTypePlainTextリンクも必要なようです。MobileCoreServices

4

3 に答える 3

19

このヘッダーを使用して、kUTTypeUTF8PlainText の値を取得します。

#import <MobileCoreServices/UTCoreTypes.h>

MobileCoreServices フレームワークを利用できるようにする必要があります。

于 2009-07-14T20:27:02.863 に答える
8

コメントと私自身の質問に答える:

  • pasteboard文字列プロパティの設定は機能します。
  • ペーストボードタイプの代わりに使用すると、使用setValue:forPasteboardType:も機能します。kUTTypeUTF8PlainTextkUTTypePlainText

「単一のペーストボード項目の取得と設定」タスク セクションに直接行ったため、文字列プロパティに気付きませんでした。

私がテストしていた方法は、テキスト フィールドをクリックして、貼り付けポップアップが表示されるかどうかを確認することでした。

ドキュメントのどこで UTT タイプが iPhone 用に説明されているか (フレームワーク、#includeファイル) を含め、まだわかりません。「Uniform Type Identifiers Overview」ドキュメントはまだ Mac OS を対象としているようです。定数によって型の不一致の警告が表示されたので、何か間違ったことをしていると思ったので、最初にNSStringリテラルを使用してみました。

于 2009-06-29T13:12:47.853 に答える
3

ペーストボードにテキストを貼り付けた私の実験は次のとおりです。ボタンを使用して、プログラムでテキストを追加しています。

#import <MobileCoreServices/MobileCoreServices.h>

- (IBAction)setPasteboardText:(id)sender
{
    UIPasteboard *pb = [UIPasteboard generalPasteboard];
    NSString *text = @"東京京都大阪";

    // Works, but generates an incompatible pointer warning
    [pb setValue:text forPasteboardType:kUTTypeText];

    // Puts generic item (not text type), can't be pasted into a text field
    [pb setValue:text forPasteboardType:(NSString *)kUTTypeItem];

    // Works, even with non-ASCII text
    // I would say this is the best way to do it with unknown text
    [pb setValue:text forPasteboardType:(NSString *)kUTTypeText];

    // Works without warning
    // This would be my preferred method with UTF-8 text
    [pb setValue:text forPasteboardType:(NSString *)kUTTypeUTF8PlainText];

    // Works without warning, even with Japanese characters
    [pb setValue:text forPasteboardType:@"public.plain-text"];

    // Works without warning, even with Japanese characters
    [pb setValue:text forPasteboardType:@"public.text"];

    // Check contents and content type of pasteboard
    NSLog(@"%@", [pb items]);
}

内容をテキストフィールドに貼り付けて確認し、テキストの内容を毎回変更して、以前の貼り付けを再利用していないことを確認しました。

于 2012-10-25T13:16:01.567 に答える