10

iPhone 3.0のペーストボードに複数のデータ表現を配置しようとすると、いくつかの問題が発生しました。

私がやろうとしているのは、データ表現と文字列表現をペーストボードに配置することです。データは私自身のデータ型であり、アプリケーションでのコピーと貼り付けに使用します。文字列表現は、アプリケーションのコンテンツをアウトラインとしてコピーして他のアプリケーション(Mail.appなど)に貼り付ける方法です。

    // payload
NSString *pasteboardString = [selectedNode stringRepresentation];
NSDictionary *pasteboardDictionary = [selectedNode nodeAndSubnodesProperties];

// set payload
UIPasteboard *pasteboard = [UIPasteboard generalPasteboard];
pasteboard.string = pasteboardString;
[pasteboard setValue:pasteboardDictionary forPasteboardType:MNTNodesPasteboardType];

文字列プロパティとsetValue:forPasteboardType:メソッドがペーストボードの最初の表現を置き換えるため、上記のコードは機能しません。addItems:を試しましたが、うまくいきませんでした。

助けてくれてありがとう!

4

2 に答える 2

17

私自身の質問に答えるには:

ペーストボードに複数の表現を配置するには、itemsプロパティを使用する必要があります。これを行うには、各表現を値として、表現タイプをキーとしてディクショナリを作成します。このディクショナリを配列に追加します。配列内の各アイテムはアイテムを表します(UIPasteboardは、ペーストボードへの複数のアイテムの追加と、各アイテムへの複数の表現の追加をサポートしています)。

2つの表現を持つ1つのアイテムのサンプルコード:

    UIPasteboard *pasteboard = [UIPasteboard generalPasteboard];
NSMutableDictionary *item = [NSMutableDictionary dictionaryWithCapacity:2];
[item setValue:[NSKeyedArchiver archivedDataWithRootObject:pasteboardDictionary] forKey:MNTNodesPasteboardType];
[item setValue:pasteboardString forKey:(NSString *)kUTTypeUTF8PlainText];
pasteboard.items = [NSArray arrayWithObject:item];

MobileCoreServicesフレームワークとリンクして、UTI定数を解決することを忘れないでください。

于 2009-07-03T09:05:24.490 に答える
0

これがSwiftでうまくいったことで、画像とテキストの両方をパストボードに貼り付けます

let pastebaord = UIPasteboard.generalPasteboard()
let image = UIImage(named: "my-image-file")
pastebaord.addItems([ [UIPasteboardTypeListString[0] as! String : "hello"], [UIPasteboardTypeListImage[0] as! String: image!]]) 
于 2016-08-28T13:32:46.293 に答える