2011-10-05 58 views
3

我想將圖像和文本(都)複製到UIPasteBoard。 是否可以複製文本和圖像。將圖像和文本複製到UIPasteboard

在這裏,我可以只複製圖像或僅文本。 如何複製兩者?

我對複印圖像的代碼如下,

UIPasteboard *pasteBoard = [UIPasteboard pasteboardWithName:UIPasteboardNameGeneral create:NO]; 
pasteBoard.persistent = YES; 
NSData *data = UIImagePNGRepresentation(newImage); 
[pasteBoard setData:data forPasteboardType:(NSString *)kUTTypePNG]; 

在此先感謝!!!!!

回答

3

您應該設置的項目從參考pasteboard-

描述的物品屬性是 -

項目

粘貼板上粘貼板項目。 @property(非原子,複製) NSArray *項目討論

該屬性的值是一個字典數組。每個字典 代表粘貼板項目,其中密鑰是 類型的表示,並且該數據對象或屬性列表對象與該類型關聯的 的值。設置此屬性將取代當前的所有 紙板項目。

因此,您可以將兩個詞典添加到一個數組,其中鍵值對爲&,並將此數組設置爲items屬性。

+0

謝謝Akshay對於你的回覆 – Vijay

+0

這真的是正確的做法。爲每個項目製作單獨的NSDictionary對象。我已經做到了,它爲我工作。看到我的答案。 –

+0

從iOS8開始,當粘貼到郵件應用程序時,這不再起作用。如果有圖像存在,它們將被粘貼而不是文本。 –

2

根據我的經驗,官方的方式根本不適用於iOS。不要爲每個項目創建單獨的字典並將其添加到數組中(如文檔中所述),請將所有項目添加到單個字典中,然後使用該單個字典創建一個數組並將其設置爲粘貼板。

像這樣:

NSMutableDictionary * pasteboardDict = [NSMutableDictionary dictionary]; 
[pasteboardDict setObject:someData forKey:someUTIkey]; 
[pasteboardDict setObject:someOtherData forKey:someOtherUTIkey]; 
[[UIPasteboard generalPasteboard]setItems:[NSArray arrayWithObject:pasteboardDict]]; 
+0

當我用多個文本對象執行此操作時,第一個對象之後的任何文本對象都會在它們包含的第一個回車符中被截斷。你見過這種效果,還是你總是使用不同的類型? http://stackoverflow.com/questions/7444590/uipasteboard-truncating-strings-when-pasting-multiple-items-int-mail?rq=1 –

+0

感謝ecume des jours對於你的回覆。 – Vijay

11

這裏是我的代碼,它是我的設備上正常使用。

UIPasteboard *pasteboard = [UIPasteboard generalPasteboard]; 
pasteboard.persistent = NO; 

NSMutableDictionary *text = [NSMutableDictionary dictionaryWithCapacity:1]; 
[text setValue:captionLabel.text forKey:(NSString *)kUTTypeUTF8PlainText]; 

NSMutableDictionary *image = [NSMutableDictionary dictionaryWithCapacity:1]; 
[image setValue:gratitudeImageView.image forKey:(NSString *)kUTTypePNG]; 

pasteboard.items = [NSArray arrayWithObjects:image,text, nil]; 
+0

擡頭! kUTTypeUTF8PlainText和kUTTypePNG需要MobileCoreServices框架!或者,也許你可以找到那些確切的字符串,並進入那裏... – Jonny

+0

單挑2:當試圖發送文本和圖像到LINE應用程序時,這實際上不工作...它可能是,LINE只是不支持它。 http://media.line.me/howto/en/(格式2)對我來說只有圖像以LINE顯示。 – Jonny

2

好像它是毫無意義的設置persistent布爾在iOS上,蘋果:

的iOS,公共(系統)pasteboards是持久的,但默認情況下私(應用程序)pasteboards都沒有。 當創建它們的應用程序退出時,這些私人粘貼板不會繼續存在。但是,您可以將應用程序粘貼板標記爲永久性的。