当我尝试将多个数据表示放到 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: 但它对我不起作用。
感谢您的任何帮助!
回答我自己的问题:
您必须使用 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 常量。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)