1. UIMenuController示例
示例.png
2. UIMenuController須知
- 默認(rèn)情況下,以下3個控件已經(jīng)支持UIMenuController
- UITextView
- UITextFiled
- UIWebView
3. 讓其他控件也支持UIMenuController(例:UILabel)
- 自定義UILabel
- 重寫兩個方法
//讓label有資格成為第一響應(yīng)者
- (BOOL)canBecomeFirstResponder {
return YES;
}
/**
* label能執(zhí)行哪些操作(比如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;
} - 實現(xiàn)剪切,復(fù)制,粘貼方法
//剪切
- (void)cut:(UIMenuController *)menu {
//將自己的文字復(fù)制到粘貼板
[self copy:menu];
//清空文字
self.text = nil;
}
//復(fù)制
- (void)copy:(UIMenuController *)menu {
//將自己的文字復(fù)制到粘貼板
UIPasteboard *board = [UIPasteboard generalPasteboard];
board.string = self.text;
}
//粘貼
- (void)paste:(UIMenuController *)menu {
//將粘貼板的文字復(fù)制到自己身上
UIPasteboard *board = [UIPasteboard generalPasteboard];
self.text = board.string;
} - 讓label成為第一響應(yīng)者
//這里self是label
[self becomeFirstResponder]; - 顯示UIMenuController
UIMenuController *menu = [UIMenuController sharedMenuController];
//targetRect: MenuController需要指向的矩形框
//targetView: targetRect會以targetView的左上角為坐標(biāo)原點
[menu setTargetRect:self.bounds inView:self];
[menu setMenuVisible:YES animated:YES];
4. 自定義UIMenuController內(nèi)部的Item
//添加MenuItem(點擊Item,默認(rèn)會調(diào)用控制器的方法)
UIMenuItem *ding = [[UIMenuItem alloc] initWithTitle:@"頂" action:@selector(ding:)];
UIMenuItem *replay = [[UIMenuItem alloc] initWithTitle:@"回復(fù)" action:@selector(replay:)];
UIMenuItem *report = [[UIMenuItem alloc] initWithTitle:@"舉報" action:@selector(report:)];
menu.menuItems = @[ding,replay,report];