我正在创建一个包含UITextView
的应用,其中包含大量文字。当我双击任何文本时,它的默认行为将会发生并显示UIMenuController
。像这样,
但我希望显示自定义弹出窗口,而不是像UIMenuController
这样显示
我该怎么做?
更新
当UIMenuController
打开时,将调用哪种方法?
答案 0 :(得分:0)
检查此question的已接受答案。
您可以继承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
。