媒介
信任年夜家都曉得在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]; }
彌補:
1、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時,體系會挪用下面對應的辦法
2、.以下是剪貼板中可以放置的內容(除字符串,也能夠拷貝圖片,URL等)
1.UIPasteboardTypeListString
字符串數組, 包括kUTTypeUTF8PlainText
2.UIPasteboardTypeListURL
URL數組,包括kUTTypeURL
3.UIPasteboardTypeListImage
圖形數組, 包括kUTTypePNG 和kUTTypeJPEG
4.UIPasteboardTypeListColor
色彩數組
總結
以上就是這篇文章的全體內容了,願望能對列位iOS開辟者們有所贊助,假如有疑問年夜家可以留言交換。
【iOS長按UIlabel完成可復制功效】的相關資料介紹到這裡,希望對您有所幫助! 提示:不會對讀者因本文所帶來的任何損失負責。如果您支持就請把本站添加至收藏夾哦!