媒介
信任年夜家都曉得在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完成可復制功效】的相關資料介紹到這裡,希望對您有所幫助! 提示:不會對讀者因本文所帶來的任何損失負責。如果您支持就請把本站添加至收藏夾哦!