2012-11-05 52 views
0

1)我複製圖像從UIPasteboard使用這種方法[UIPasteboard generalPasteboard].image;如何nill的UIPasteboard

2)價值創造我想要清潔UIPasteboard圖像後。所以我寫這個方法[UIPasteboard generalPasteboard].image = nil;但在iOS 4和iOS 5這個工作不錯,但它在iOS 6

3)在我的應用我要清理UIPasteboard或零的UIPasteboard值給出了問題。我如何在iOS 6上做到這一點?

+0

你使用iOS 6會遇到什麼問題? – rmaddy

+0

它現在拋出一個異常,該參數不是UIImage的一種類型。顯然這是一個錯誤。 – halt00

回答

0

這是我目前使用

UIPasteboard *pb = [UIPasteboard generalPasteboard]; 
[pb setValue:@"" forPasteboardType:UIPasteboardNameGeneral]; 
+0

這是行不通的?它是否重置圖像或只是文本? – halt00

1

我很抱歉,但接受的答案僅僅是誤導性/不正確。這不會清除粘貼板中的現有值。

setValue:forPasteboardType:的第二個參數是該項目的字符串標識符。正如文檔所建議的,它可能是UTI(查看MobileCoreServices)或用戶定義的字符串。

接受答案中的方法調用使用UIPasteboardNameGeneral,它是整個紙板本身的標識符(如果[UIPasteboard items]中的字典數組中的項目不是一個鍵)。由於粘貼板不包含該項的項目,該呼叫將爲空白。自己很容易驗證這一點。 [[UIPasteboard generalPasteboard] name]等於UIPasteboardNameGeneral。另外,使用該密鑰的containsPasteboardTypes:將返回NO

現在解決iOS 6中可能發生的情況。Apple可能使用UTI(例如kUTTypePNG)作爲存儲在紙板中的圖像數據的關鍵字。他們可能確保爲該密鑰設置的值確實是NSData(不是nil)。

爲了解決你的難題,我建議下列之一:

  • 如果您不想共享您放到與其他應用程序剪貼板的內容,你可以創建一個專用剪貼板使用+ (UIPasteboard *)pasteboardWithName:(NSString *)pasteboardName create:(BOOL)create
    • 此剪貼板的內容只能被您的應用程序訪問,並且在您的應用程序被刪除時將被刪除。
    • 當應用程序退出時,剪貼板的內容將被清除,除非您將persistent屬性設置爲YES。
    • 通過訪問常規剪貼板,您仍可以訪問由其他應用程序放置到剪貼板上的項目。
  • 如果您絕對必須清除內容(根據列出的限制),您可以嘗試設置另一個有效的圖像。我對此方法有所懷疑,因爲給定剪貼板項目可能有多個鍵。

希望這會有所幫助。