[iOS] UIPastboard介紹

這個class的作用在於不同的app之間分享資料。
  • 在任何不同的app之間分享資料,可使用:system-wide pasteboards
  • 在特定的team ID下的App分享資料,可使用:app-specific pasteboards

剪貼簿

pastboard是一個被命名的記憶體區域,此記憶體內儲存的資料可以被分享。

預設的剪貼簿有兩種:
  • UIPasteboardNameGeneral (General Pastboard)
  • UIPasteboardNameFind (Find Pastboard)
General Pastboard,可以針對任何種類的資料做複製貼上的操作。 Find Pastboard,用於搜尋操作,擁有最近在搜尋列上輸入的字串。

App可以創建自己使用、或是提供給相同team ID的App使用的剪貼簿。剪貼簿必須有獨一無二的名稱以供識別。你可以將app-specific的剪貼簿標記成永遠存在。System pastboard預設上是永遠存在的。

當你將物件寫入到剪貼簿上,他會以pastboard item來儲存。Pastboard item是單一或更多的key-value pairs,這邊的key是一個字串,用於識別value的表示類型(represantation type)。舉例來說,源app可能會以PNG、JEPG和GIF資料格式將圖片寫入pastboard,擁有多種表示類型的pastboard item更容易分享給其他的app,比方說如果接收端app只能處理GIF的圖片,他還是可以獲得這份pastboard data。

Uniform Type Identifier (UTI) 經常用於表示類型(又叫做pasteboard type)。App要用什麼字串去命名表示類型都可以,然而,對於app-specific data類型來說,建議使用reverse-DNS notation來確保類型的獨一性。

讀寫方法

針對pastboard item的讀寫方法:

協同的UIKit和Protocol

  • UIMenuController:顯示在選擇區塊上或下方的選單(複製、剪下、貼上等等)
  • UIResponder:實作canPerformAction:withSender:來啟動或是取消上面提到的提到的指令。
  • UIResponderStandardEditActions:Responders會實作宣告在此informal protocol內的方法來處理所選的選單指令。

呼叫預設剪貼簿

只要一行就可以了:
 UIPasteboard *pastboard = [UIPasteboard generalPasteboard];

留言