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

上面的代码不起作用,因为 string 属性和 setValue:forPasteboardType: 方法替换了粘贴板上的第一个表示。我尝试了 addItems: 但它对我不起作用。

感谢您的任何帮助!

4

2 回答 2

17

回答我自己的问题:

您必须使用 items 属性将多个表示形式放到粘贴板上。为此,您创建一个字典,其中每个表示作为值,表示类型作为键。将此字典添加到数组中,其中数组中的每个项目代表一个项目(UIPasteboard 支持将多个项目添加到粘贴板以及为每个项目添加多个表示形式)。

具有两种表示形式的单个项目的示例代码:

    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 回答