我正在创建一个UITextView
包含大量文本的应用程序。当我双击任何文本而不是其默认行为时,会发生并显示UIMenuController
。像这样,
但我想显示自定义弹出窗口而不是UIMenuController
这样,
我怎样才能做到这一点?
更新
打开时会调用哪个方法UIMenuController
?
我正在创建一个UITextView
包含大量文本的应用程序。当我双击任何文本而不是其默认行为时,会发生并显示UIMenuController
。像这样,
但我想显示自定义弹出窗口而不是UIMenuController
这样,
我怎样才能做到这一点?
更新
打开时会调用哪个方法UIMenuController
?
检查此问题的已接受答案。
您可以继承 UITextField 并覆盖以下方法以禁用您想要的任何操作:
-(BOOL)canPerformAction:(SEL)action withSender:(id)sender
{
if (action == @selector(paste:))
{
return NO;
}
else if (action == @selector(cut:))
{
return NO;
}
else if (action == @selector(copy:))
{
return NO;
}
... //etc etc
return [super canPerformAction:action withSender:sender];
}
并使用以下代码显示您自己的:
UIMenuController *menu = [UIMenuController sharedMenuController];
[menu setTargetRect:textField.frame inView:textField.superview];
[menu setMenuItems:[NSArray arrayWithObjects:
[[UIMenuItem alloc] initWithTitle:@"Test" action:@selector(test)],
nil]];
[menu setMenuVisible:YES animated:YES];
并且在canPeformAction:withSender:
方法中您可以返回YES
选择器Test
。