![这里写图片描述](https://img-blog.csdn.net/20160520200808629)
- 默认情况下, 有以下控件已经支持
UIMenuController
UITextField
UITextView
UIWebView
- 让Label成为
第一响应者
- 作用是:告诉UIMenuController支持哪些操作, 这些操作如何处理
[self becomeFirstResponder];
/**
* 让label有资格成为第一响应者
*/
- (BOOL)canBecomeFirstResponder
{
return YES;
}
/**
* label能执行哪些操作(比如copy, paste等等)
* @return YES:支持这种操作
*/
- (BOOL)canPerformAction:(SEL)action withSender:(id)sender
{
if (action == @selector(cut:) || action == @selector(copy:) || action == @selector(paste:)) return YES;
return NO;
}
- 在label(
第一响应者
)中实现默认
的各种操作方法
- (void)cut:(UIMenuController *)menu
{
[self copy:menu];
self.text = nil;
}
- (void)copy:(UIMenuController *)menu
{
UIPasteboard *board = [UIPasteboard generalPasteboard];
board.string = self.text;
}
- (void)paste:(UIMenuController *)menu
{
UIPasteboard *board = [UIPasteboard generalPasteboard];
self.text = board.string;
}
UIMenuController *menu = [UIMenuController sharedMenuController];
[menu setTargetRect:self.bounds inView:self];
[menu setMenuVisible:YES animated:YES];
- 添加item
- 点击自定义的item, 默认会调用控制器的方法,具体是哪个控制器,要看第一响应者处在哪个控制器里面
- 在
第一响应者
所在的控制器中实现自定义item
的方法
UIMenuItem *ding = [[UIMenuItem alloc] initWithTitle:@"顶" action:@selector(ding:)];
UIMenuItem *replay = [[UIMenuItem alloc] initWithTitle:@"回复" action:@selector(replay:)];
UIMenuItem *report = [[UIMenuItem alloc] initWithTitle:@"举报" action:@selector(report:)];
menu.menuItems = @[ding, replay, report];