国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > iOS > 正文

iOS長按UIlabel實現可復制功能

2020-07-26 03:11:39
字體:
來源:轉載
供稿:網友

前言

相信大家都知道在iOS中有三個控件自身是支持拷貝,粘貼的,如:UITextField,UITextView,UIWebView。但是,有時候我們會遇到需要長按UIlabel,彈出“復制”item,來實現可復制。那該怎么辦呢?下面就來一起看看吧。

首先UIKit中提供給我們幾個類

在開始之前,我們需要自定義一個WINCopyLabel繼承UILable

- (instancetype)initWithFrame:(CGRect)frame { if (self = [super initWithFrame:frame]) {  [self pressAction]; } return self;}// 初始化設置- (void)pressAction { self.userInteractionEnabled = YES; UILongPressGestureRecognizer *longPress = [[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(longPressAction:)]; longPress.minimumPressDuration = 1; [self addGestureRecognizer:longPress];}

1、UIResponder:通過這個類實現UILabel可以響應事件(我們知道UIlabel是不能成為響應者的,所以這里需要重寫),控制需要響應的事件

 // 使label能夠成為響應事件 - (BOOL)canBecomeFirstResponder {  return YES; } // 控制響應的方法 - (BOOL)canPerformAction:(SEL)action withSender:(id)sender {  return action == @selector(customCopy:); }

2、UIPasteboard:該類支持寫入和讀取數據,類似剪貼板

 - (void)customCopy:(id)sender { UIPasteboard *pasteboard = [UIPasteboard generalPasteboard]; pasteboard.string = self.text; }

3、UIMenuController:可以通過這個類實現在點擊內容,或者長按內容時展示出復制、剪貼、粘貼等選擇的項,每個選項都是一個UIMenuItem對象

- (void)longPressAction:(UIGestureRecognizer *)recognizer { [self becomeFirstResponder]; UIMenuItem *copyItem = [[UIMenuItem alloc] initWithTitle:@"拷貝" action:@selector(customCopy:)]; [[UIMenuController sharedMenuController] setMenuItems:[NSArray arrayWithObjects:copyItem, nil]]; [[UIMenuController sharedMenuController] setTargetRect:self.frame inView:self.superview]; [[UIMenuController sharedMenuController] setMenuVisible:YES animated:YES];}

補充:

一、UIResponderStandardEditActions:這是蘋果給NSObject寫的一個分類,其中包含了我們常用的復制,粘貼,全選等方法

 - (void)cut:(nullable id)sender  NS_AVAILABLE_IOS(3_0); - (void)copy:(nullable id)sender  NS_AVAILABLE_IOS(3_0); - (void)paste:(nullable id)sender  NS_AVAILABLE_IOS(3_0); - (void)select:(nullable id)sender  NS_AVAILABLE_IOS(3_0); - (void)selectAll:(nullable id)sender  NS_AVAILABLE_IOS(3_0); - (void)delete:(nullable id)sender   NS_AVAILABLE_IOS(3_2);

當我們,選中彈出的item時,系統會調用上面對應的方法

二、.以下是剪貼板中可以放置的內容(除了字符串,也可以拷貝圖片,URL等)

      1.UIPasteboardTypeListString 字符串數組, 包含kUTTypeUTF8PlainText

      2.UIPasteboardTypeListURL URL數組,包含kUTTypeURL

      3.UIPasteboardTypeListImage 圖形數組, 包含kUTTypePNG 和kUTTypeJPEG

      4.UIPasteboardTypeListColor 顏色數組

總結

以上就是這篇文章的全部內容了,希望能對各位iOS開發者們有所幫助,如果有疑問大家可以留言交流。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 吉林省| 额济纳旗| 景洪市| 山阴县| 芜湖县| 太原市| 时尚| 上林县| 太仆寺旗| 天等县| 府谷县| 金山区| 正安县| 会理县| 平塘县| 周宁县| 凌海市| 津南区| 宁武县| 贵德县| 溧水县| 六安市| 平和县| 广宗县| 临泽县| 古田县| 惠安县| 南溪县| 永仁县| 河北区| 丰台区| 深州市| 张家川| 积石山| 彭州市| 厦门市| 隆德县| 石首市| 绥宁县| 海原县| 高清|