2009-06-28 8 views
6

iPhoneのペーストボードにプレーンテキストを挿入しようとしています。次のコードは動作していないようです:iPhoneのペーストボードの基本的な使い方

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

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

+2

- [UIPasteboard setString:]メソッドを使用する代わりにこれを行う理由を聞かせてもいいですか?また、「何も起こらない」とはどういう意味ですか?正確に何を期待していたのですか?どのようにこれを決定していますか? –

答えて

8

コメントや自分の質問への対応:pasteboard文字列プロパティ作品の設定

  • setValue:forPasteboardType:を使用すると、kUTTypePlainTextの代わりにkUTTypeUTF8PlainTextをペーストボードタイプに使用しても動作します。

私は「の取得および設定するシングルペーストボードアイテム」タスクのセクションに直接行ってきましたので、私は、文字列プロパティに気づいていませんでした。

私がテストしたのは、テキストフィールドをクリックし、ペーストポップアップが表示されるかどうかを確認することでした。

iPhone用のUTTタイプがどこにあるのか(フレームワーク、#includeファイル)についてはまだ分かりませんが、「統一タイプ識別子の概要」のドキュメントはまだMac向けですOS。定数が私にタイプミスマッチの警告を与えたので、何か間違っていると思ったので、最初にNSStringリテラルを使ってみました。

+1

私が説明したように、Mac OS Xに合わせることとは何の関係もありません。文字列をキャストするだけです。これらの定数はCFStringRefとして宣言されています。これは、フリーダイヤルでNSStringでブリッジされています。 (NSString *)kutTypePlainText –

19

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

#import <MobileCoreServices/UTCoreTypes.h> 

MobileCoreServicesフレームワークを使用する必要があります。

+3

'[pboard setValue:value forPasteboardType:(NSString *)kUTTypeUTF8PlainText]; ' –

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]); 
} 

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

+0

イメージを貼り付けるにはどうすればよいですか? – Ramakrishna

関連する問題