iOS - UIPasteboard 剪切板

1.應(yīng)用范圍

iOS在某些特定時刻需要把內(nèi)容重一個app拷貝到另一個app 這時候我們就可以使用剪切板UIPasteboard

2殊者、iOS自帶剪切板操作的原生UI控件

在iOS中下面三個控件,自身就有復(fù)制-粘貼的功能: (1)今瀑、UITextView (2)、UITextField (3)褒翰、UIWebView

3压恒、系統(tǒng)的剪切板UIPasteboard

UIPasteboard類有3個初始化方法:

//獲取系統(tǒng)級別的剪切板
+ (UIPasteboard *)generalPasteboard;
//獲取一個自定義的剪切板 name參數(shù)為此剪切板的名稱 create參數(shù)用于設(shè)置當(dāng)這個剪切板不存在時 是否進(jìn)行創(chuàng)建
+ (nullable UIPasteboard *)pasteboardWithName:(NSString *)pasteboardName create:(BOOL)create;
//獲取一個應(yīng)用內(nèi)可用的剪切板
+ (UIPasteboard *)pasteboardWithUniqueName;

上面3個初始化方法伦吠,分別獲取或創(chuàng)建3個級別不同的剪切板荷愕,系統(tǒng)級別的剪切板在整個設(shè)備中共享,即是應(yīng)用程序被刪掉玉罐,其向系統(tǒng)級的剪切板中寫入的數(shù)據(jù)依然在。自定義的剪切板通過一個特定的名稱字符串進(jìn)行創(chuàng)建,它在應(yīng)用程序內(nèi)或者同一開發(fā)者開發(fā)的其他應(yīng)用程序中可以進(jìn)行數(shù)據(jù)共享癣蟋。第3個方法創(chuàng)建的剪切板等價為使用第2個方法創(chuàng)建的剪切板丽声,只是其名稱字符串為nil晒骇,它通常用于當(dāng)前應(yīng)用內(nèi)部。

注意:使用第3個方法創(chuàng)建的剪切板默認(rèn)是不進(jìn)行數(shù)據(jù)持久化的洪囤,及當(dāng)應(yīng)用程序退出后徒坡,剪切板中內(nèi)容將別抹去。若要實現(xiàn)持久化瘤缩,需要設(shè)置persistent屬性為YES喇完。

//剪切板的名稱
@property(readonly,nonatomic) NSString *name;
//根據(jù)名稱刪除一個剪切板
+ (void)removePasteboardWithName:(NSString *)pasteboardName;
//是否進(jìn)行持久化
@property(getter=isPersistent,nonatomic) BOOL persistent;
//此剪切板的改變次數(shù) 系統(tǒng)級別的剪切板只有當(dāng)設(shè)備重新啟動時 這個值才會清零
@property(readonly,nonatomic) NSInteger changeCount;

下面這些方法用于設(shè)置與獲取剪切板中的數(shù)據(jù):
最新一組數(shù)據(jù)對象的存取:

//獲取剪切板中最新數(shù)據(jù)的類型
- (NSArray<NSString> *)pasteboardTypes;
//獲取剪切板中最新數(shù)據(jù)對象是否包含某一類型的數(shù)據(jù)
- (BOOL)containsPasteboardTypes:(NSArray<NSString> *)pasteboardTypes;
//將剪切板中最新數(shù)據(jù)對象某一類型的數(shù)據(jù)取出
- (nullable NSData *)dataForPasteboardType:(NSString *)pasteboardType;
//將剪切板中最新數(shù)據(jù)對象某一類型的值取出
- (nullable id)valueForPasteboardType:(NSString *)pasteboardType;
//為剪切板中最新數(shù)據(jù)對應(yīng)的某一數(shù)據(jù)類型設(shè)置值
- (void)setValue:(id)value forPasteboardType:(NSString *)pasteboardType;
//為剪切板中最新數(shù)據(jù)對應(yīng)的某一數(shù)據(jù)類型設(shè)置數(shù)據(jù)
- (void)setData:(NSData *)data forPasteboardType:(NSString *)pasteboardType;

多組數(shù)據(jù)對象的存劝 :

//數(shù)據(jù)組數(shù)
@property(readonly,nonatomic) NSInteger numberOfItems;
//獲取一組數(shù)據(jù)對象包含的數(shù)據(jù)類型
- (nullable NSArray *)pasteboardTypesForItemSet:(nullable NSIndexSet*)itemSet;
//獲取一組數(shù)據(jù)對象中是否包含某些數(shù)據(jù)類型
- (BOOL)containsPasteboardTypes:(NSArray<NSString> *)pasteboardTypes inItemSet:(nullable NSIndexSet *)itemSet;
//根據(jù)數(shù)據(jù)類型獲取一組數(shù)據(jù)對象
- (nullable NSIndexSet *)itemSetWithPasteboardTypes:(NSArray *)pasteboardTypes;
//根據(jù)數(shù)據(jù)類型獲取一組數(shù)據(jù)的值
- (nullable NSArray *)valuesForPasteboardType:(NSString *)pasteboardType inItemSet:(nullable NSIndexSet *)itemSet;
//根據(jù)數(shù)據(jù)類型獲取一組數(shù)據(jù)的NSData數(shù)據(jù)
- (nullable NSArray *)dataForPasteboardType:(NSString *)pasteboardType inItemSet:(nullable NSIndexSet *)itemSet;
//所有數(shù)據(jù)對象
@property(nonatomic,copy) NSArray *items;
//添加一組數(shù)據(jù)對象
- (void)addItems:(NSArray<NSDictionary> *> *)items;

上面方法中很多需要傳入數(shù)據(jù)類型參數(shù)锦溪,這些參數(shù)是系統(tǒng)定義好的一些字符竄,如下:

//所有字符串類型數(shù)據(jù)的類型定義字符串?dāng)?shù)組
UIKIT_EXTERN NSArray<NSString> *UIPasteboardTypeListString;
//所有URL類型數(shù)據(jù)的類型定義字符串?dāng)?shù)組
UIKIT_EXTERN NSArray<NSString> *UIPasteboardTypeListURL;
//所有圖片數(shù)據(jù)的類型定義字符串?dāng)?shù)據(jù)
UIKIT_EXTERN NSArray<NSString> *UIPasteboardTypeListImage;
//所有顏色數(shù)據(jù)的類型定義字符串?dāng)?shù)組
UIKIT_EXTERN NSArray<NSString> *UIPasteboardTypeListColor;

相比于上面兩組方法铐殃,下面這些方法更加面向?qū)ο蠛M荩陂_發(fā)中使用更加方便與快捷:

//獲取或設(shè)置剪切板中的字符串?dāng)?shù)據(jù)
@property(nullable,nonatomic,copy) NSString *string;
//獲取或設(shè)置剪切板中的字符串?dāng)?shù)組
@property(nullable,nonatomic,copy) NSArray<NSString> *strings;
//獲取或設(shè)置剪切板中的URL數(shù)據(jù)
@property(nullable,nonatomic,copy) NSURL *URL;
//獲取或設(shè)置剪切板中的URL數(shù)組
@property(nullable,nonatomic,copy) NSArray<NSURL> *URLs;
//獲取或s何止剪切板中的圖片數(shù)據(jù)
@property(nullable,nonatomic,copy) UIImage *image;
//獲取或設(shè)置剪切板中的圖片數(shù)組
@property(nullable,nonatomic,copy) NSArray<UIImage> *images;
//獲取或設(shè)置剪切板中的顏色數(shù)據(jù)
@property(nullable,nonatomic,copy) UIColor *color;
//獲取或設(shè)置剪切板中的顏色數(shù)組
@property(nullable,nonatomic,copy) NSArray<UIColor> *colors;

對剪切板的某些操作會觸發(fā)如下通知:

UIKIT_EXTERN NSString *const UIPasteboardChangedNotification;
//剪切板數(shù)據(jù)類型鍵值增加時發(fā)送的通知
UIKIT_EXTERN NSString *const UIPasteboardChangedTypesAddedKey;
//剪切板數(shù)據(jù)類型鍵值移除時發(fā)送的通知
UIKIT_EXTERN NSString *const UIPasteboardChangedTypesRemovedKey;
//剪切板被刪除時發(fā)送的通知
UIKIT_EXTERN NSString *const UIPasteboardRemovedNotification;
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市富腊,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌域帐,老刑警劉巖赘被,帶你破解...
    沈念sama閱讀 207,113評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異肖揣,居然都是意外死亡民假,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,644評論 2 381
  • 文/潘曉璐 我一進(jìn)店門龙优,熙熙樓的掌柜王于貴愁眉苦臉地迎上來羊异,“玉大人,你說我怎么就攤上這事彤断∫安埃” “怎么了?”我有些...
    開封第一講書人閱讀 153,340評論 0 344
  • 文/不壞的土叔 我叫張陵宰衙,是天一觀的道長平道。 經(jīng)常有香客問我,道長供炼,這世上最難降的妖魔是什么一屋? 我笑而不...
    開封第一講書人閱讀 55,449評論 1 279
  • 正文 為了忘掉前任窘疮,我火速辦了婚禮,結(jié)果婚禮上冀墨,老公的妹妹穿的比我還像新娘闸衫。我一直安慰自己,他們只是感情好诽嘉,可當(dāng)我...
    茶點故事閱讀 64,445評論 5 374
  • 文/花漫 我一把揭開白布楚堤。 她就那樣靜靜地躺著,像睡著了一般含懊。 火紅的嫁衣襯著肌膚如雪身冬。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,166評論 1 284
  • 那天岔乔,我揣著相機(jī)與錄音酥筝,去河邊找鬼。 笑死雏门,一個胖子當(dāng)著我的面吹牛嘿歌,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播茁影,決...
    沈念sama閱讀 38,442評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼宙帝,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了募闲?” 一聲冷哼從身側(cè)響起步脓,我...
    開封第一講書人閱讀 37,105評論 0 261
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎浩螺,沒想到半個月后靴患,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,601評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡要出,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,066評論 2 325
  • 正文 我和宋清朗相戀三年鸳君,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片患蹂。...
    茶點故事閱讀 38,161評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡或颊,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出传于,到底是詐尸還是另有隱情囱挑,我是刑警寧澤,帶...
    沈念sama閱讀 33,792評論 4 323
  • 正文 年R本政府宣布格了,位于F島的核電站看铆,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏盛末。R本人自食惡果不足惜弹惦,卻給世界環(huán)境...
    茶點故事閱讀 39,351評論 3 307
  • 文/蒙蒙 一否淤、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧棠隐,春花似錦石抡、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,352評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至嗡贺,卻和暖如春隐解,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背诫睬。 一陣腳步聲響...
    開封第一講書人閱讀 31,584評論 1 261
  • 我被黑心中介騙來泰國打工煞茫, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人摄凡。 一個月前我還...
    沈念sama閱讀 45,618評論 2 355
  • 正文 我出身青樓续徽,卻偏偏與公主長得像,于是被迫代替她去往敵國和親亲澡。 傳聞我的和親對象是個殘疾皇子钦扭,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,916評論 2 344

推薦閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn)床绪,斷路器客情,智...
    卡卡羅2017閱讀 134,601評論 18 139
  • 發(fā)現(xiàn) 關(guān)注 消息 iOS 第三方庫、插件会涎、知名博客總結(jié) 作者大灰狼的小綿羊哥哥關(guān)注 2017.06.26 09:4...
    肇東周閱讀 12,033評論 4 62
  • Swift版本點擊這里歡迎加入QQ群交流: 594119878最新更新日期:18-09-17 About A cu...
    ylgwhyh閱讀 25,293評論 7 249
  • 突然發(fā)現(xiàn)簡書是很好的博客 主要是移動端夠喜歡以前寫過QQ空間 百度空間 CSDN 最后百度空間沒有了文章也沒有了 ...
    人氣小哥閱讀 217評論 0 0
  • 她,從小有一個啞母,父親早逝,在周圍朋友都成雙入對后便匆匆地找到了他 他,離過一次婚,找到她后便成了第二次家 婚后...
    花香慢漫閱讀 216評論 0 1