如何显示自定义弹出窗口而不是 UIMenuController
Posted
技术标签:
【中文标题】如何显示自定义弹出窗口而不是 UIMenuController【英文标题】:How to display Custom popup instead of UIMenuController 【发布时间】:2013-07-02 11:41:41 【问题描述】:我正在创建一个包含 UITextView
的应用程序,其中包含大量文本。当我双击任何文本而不是其默认行为时,会发生并显示UIMenuController
。像这样,
但我想像这样显示自定义弹出窗口而不是 UIMenuController
,
我该怎么做?
更新
UIMenuController
打开时会调用哪个方法?
【问题讨论】:
看到这个:***.com/questions/3267296/… 和 ***.com/questions/3537795/… @DharaParekh 正如我所说,我不想在 UIMenucontroller 中添加更多选项,但我想用弹出窗口替换它 【参考方案1】:检查此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:
方法中,您可以为选择器Test
返回YES
。
【讨论】:
以上是关于如何显示自定义弹出窗口而不是 UIMenuController的主要内容,如果未能解决你的问题,请参考以下文章
需要为EditText长触摸而不是ActionMode自定义弹出窗口