创建一个继承UILable 的类
.h
#import <UIKit/UIKit.h>
@interface CopyLable : UILabel
@end
.m
#import "CopyLable.h"
@implementation CopyLable
-(BOOL)canBecomeFirstResponder {
return YES;
}
// 可以响应的方法
-(BOOL)canPerformAction:(SEL)action withSender:(id)sender {
return (action == @selector(copy:));
}
//针对于响应方法的实现
-(void)copy:(id)sender {
UIPasteboard *pboard = [UIPasteboard generalPasteboard];
pboard.string = self.text;
}
//UILabel默认是不接收事件的,我们需要自己添加touch事件
-(void)attachTapHandler {
self.userInteractionEnabled = YES;
UILongPressGestureRecognizer *touch = [[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(handleTap:)];
[self addGestureRecognizer:touch];
}
//绑定事件
- (id)initWithFrame:(CGRect)frame {
self = [super initWithFrame:frame];
if (self) {
[self attachTapHandler];
}
return self;
}
-(void)awakeFromNib {
[super awakeFromNib];
[self attachTapHandler];
}
-(void)handleTap:(UIGestureRecognizer*) recognizer {
[self becomeFirstResponder];
UIMenuItem *copyLink = [[UIMenuItem alloc] initWithTitle:@"复制"
action:@selector(copy:)];
[[UIMenuController sharedMenuController] setMenuItems:[NSArray arrayWithObjects:copyLink, nil]];
[[UIMenuController sharedMenuController] setTargetRect:self.frame inView:self.superview];
[[UIMenuController sharedMenuController] setMenuVisible:YES animated: YES];
}
@end
在UIViewController中引用
CopyLable *uidLabel = [[CopyLable alloc] initWithFrame:CGRectMake(15, 25,[UIScreen mainScreen].bounds.size.width - 30, 15)];
uidLabel.textColor = [UIColor colorWithRed:114.0/255.0 green:113.0/255.0 blue:113.0/255.0 alpha:1];
uidLabel.font = [UIFont systemFontOfSize:15];
uidLabel.text = [NSString stringWithFormat:@"UID:%@", self.myCamera.uid];
[self.view addSubview:uidLabel];