UIMenuController
2016-06-13 本文已影响382人
码路芽子
Snip20160613_2.png
UIMenuController 须知
- 默认情况下,有以下控件已经支持UIMenuController
- UITextField
- UITextView
- UIWebView
让其他控件也支持UIMenuController(比如UILabel)
- 自定义UILabel
- 重写2个方法
/**
* 让label可以成为第一响应者
*/
- (BOOL)canBecomeFirstResponder
{
return YES;
}
/**
* label能只想哪个操作
*/
- (BOOL)canPerformAction:(SEL)action withSender:(id)sender
{
NSLog(@"%@", NSStringFromSelector(action));
if (action == @selector(cut:) || action == @selector(copy:) || action == @selector(paste:)) {
return YES;
}
return NO;
}
- 实现操作方法
- (void)copy:(UIMenuController *)menu
{
/** 将自己的文字赋值到粘贴板 */
if (self.text.length > 0) {
UIPasteboard *board = [UIPasteboard generalPasteboard];
board.string = self.text;
}
}
- (void)cut:(UIMenuController *)menu
{
/** 将自己的文字赋值到粘贴板 */
[self copy:menu];
/** 清空文字 */
self.text = nil;
}
- (void)paste:(UIMenuController *)menu
{
/** 将粘贴板文字赋值到自己身上 */
UIPasteboard *board = [UIPasteboard generalPasteboard];
self.text = board.string;
}
- 显示MenuController
- (void)labelClick
{
/** Label 要成为第一响应者 (告诉我们menu支持什么操作, 如何处理)*/
[self becomeFirstResponder];
/** 显示MenuController */
UIMenuController *menu = [UIMenuController sharedMenuController];
/** targetRect: 指向的矩形框 */
[menu setTargetRect:self.frame inView:self.superview];
[menu setMenuVisible:YES animated:YES];
}