label實現複製功能,經過子類實現的,固然也能夠用分類spa
#import "YJCLabel.h" @implementation YJCLabel - (void)awakeFromNib{ [super awakeFromNib]; [self addLongGR]; } - (instancetype)initWithFrame:(CGRect)frame{ if (self = [super initWithFrame:frame]) { [self addLongGR]; } return self; } - (instancetype)init{ if (self = [super init]) { [self addLongGR]; } return self; } //添加長按手勢 - (void)addLongGR{ self.userInteractionEnabled = YES; UILongPressGestureRecognizer *lpr = [[UILongPressGestureRecognizer alloc]initWithTarget:self action:@selector(longPressGR:)]; [self addGestureRecognizer:lpr]; } //長按手勢實現 -(void)longPressGR:(UIGestureRecognizer*) recognizer { [self becomeFirstResponder]; UIMenuItem *copyItem = [[UIMenuItem alloc]initWithTitle:@"複製" action:@selector(copyText:)];//注意名字不能與系統默認的copy相同,要否則會顯示一個title爲copy的item UIMenuItem *pasteItem = [[UIMenuItem alloc]initWithTitle:@"粘貼" action:@selector(pasteText:)]; [[UIMenuController sharedMenuController] setMenuItems:@[copyItem,pasteItem]];//這兒須要判斷一下粘貼板有沒有文字,哈哈偷懶 [[UIMenuController sharedMenuController]setTargetRect:self.frame inView:self.superview];//還有個menuFrame屬性 [[UIMenuController sharedMenuController] setMenuVisible:YES animated:YES]; } //複製文本 - (void)copyText:(id)sender{ [UIPasteboard generalPasteboard].string = self.text; } //粘貼文本 - (void)pasteText:(id)sender{ self.text = [UIPasteboard generalPasteboard].string; } //容許成爲第一響應者,默認NO - (BOOL)canBecomeFirstResponder{ return YES; } //判斷操做是否是本身想要的 - (BOOL)canPerformAction:(SEL)action withSender:(id)sender{ return (action == @selector(copyText:) || action == @selector(pasteText:)); } @end
注意與表類族之間的響應交換,若是沒有特殊的要求,仍是用textView吧哈哈code