如何在 UIWebView 中突出显示文本时删除“定义”菜单
Posted
技术标签:
【中文标题】如何在 UIWebView 中突出显示文本时删除“定义”菜单【英文标题】:how to remove "define" menu when text is highlighted in UIWebView 【发布时间】:2012-01-11 19:54:20 【问题描述】:我试过这样做:
- (BOOL)canPerformAction:(SEL)action withSender:(id)sender
return NO;
但是还是弹出菜单,我也想保留副本,我只想去掉“define”,可以吗?为了澄清我不想删除文本选择的能力,我只是想删除 UIMenuController 中的“定义”选项
【问题讨论】:
为什么要屏蔽用户定义词的能力? 【参考方案1】:你是否在 canPerformAction:withSender 中返回YES?
请注意,如果您的类对命令返回 NO,则响应者链上的另一个响应者可能仍会返回 YES,从而启用该命令。
【讨论】:
这是一个类似 java 的 Final 关键字在 Objective-C 中派上用场的地方 错了。响应者链跨不同的类(UIView->UIViewController->UIWindow->UIApplication)工作。 “final”关键字对这里没有任何帮助。【参考方案2】:你需要继承UIWebView,然后
-(BOOL)canPerformAction:(SEL)action withSender:(id)sender
// XLOG(@"perform action %@ with sender %@.", NSStringFromSelector(action), sender);
if ((action == @selector(cut:)) || (action == @selector(copy:)) || (action == @selector(select:)) ||
(action == @selector(selectAll:)) || (action == @selector(paste:)) || (action == @selector(delete:)))
return [super canPerformAction:action withSender:sender];
return NO;
【讨论】:
来自 Apple 的文档:UIWebView 类不应被子类化。以上是关于如何在 UIWebView 中突出显示文本时删除“定义”菜单的主要内容,如果未能解决你的问题,请参考以下文章
Eclipse Py-dev,深色主题在键入时删除文本突出显示?