我很抱歉,但接受的答案僅僅是誤導性/不正確。這不會清除粘貼板中的現有值。
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。
- 通過訪問常規剪貼板,您仍可以訪問由其他應用程序放置到剪貼板上的項目。
- 如果您絕對必須清除內容(根據列出的限制),您可以嘗試設置另一個有效的圖像。我對此方法有所懷疑,因爲給定剪貼板項目可能有多個鍵。
希望這會有所幫助。
你使用iOS 6會遇到什麼問題? – rmaddy
它現在拋出一個異常,該參數不是UIImage的一種類型。顯然這是一個錯誤。 – halt00