2009-06-23 62 views
9

我試圖在iPhone 3.0上將多個數據表示放到粘貼板上時遇到了一些問題。用多種數據表示法在iPhone上覆制並粘貼

我想要做的是把數據表示和字符串表示放到粘貼板上。數據是我自己的數據類型,我用它來複制和粘貼到我的應用程序中。字符串表示法是將應用程序的內容作爲大綱複製並粘貼到其他應用程序(例如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:但它不適合我。

謝謝你的幫助!

回答

15

要回答我的問題:

你要使用的物品屬性把多個表示到剪貼板。爲此,您可以創建一個字典,其中每個表示形式都是值,表示形式是鍵。將此字典添加到數組中,其中數組中的每個項目表示一個項目(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常數。

-1

這是我在斯威夫特 什麼工作也都粘貼圖片和文字一起到pastboard

let pastebaord = UIPasteboard.generalPasteboard() 
let image = UIImage(named: "my-image-file") 
pastebaord.addItems([ [UIPasteboardTypeListString[0] as! String : "hello"], [UIPasteboardTypeListImage[0] as! String: image!]])