【发布时间】:2026-01-15 10:40:02
【问题描述】:
在 UIWebView 中,我希望某个类 div 元素仅显示一个自定义上下文菜单条目。所以我在 UIWebView 委托中实现了 canPerformAction:: 方法,如下所示:
- (BOOL)canPerformAction:(SEL)action withSender:(id)sender {
if (self.webView.superview != nil) {
BOOL isMyClass=[[self.webView stringByEvaluatingJavaScriptFromString:@"window.getSelection().getRangeAt(0).startContainer.parentNode.className;"] isEqualToString:@"myClass"];
if (isMyClass) {
if (action == @selector(myAction:)) {
return YES;
} else {
return NO; // should disable any other menu items
}
}
}
return [super canPerformAction:action withSender:sender];
}
结果很奇怪:当用户选择了这样一个myclass div时,大部分menuItems都没有显示出来(cut:copy:past:...)但是select:和selectAll:仍然显示出来了(和myAction一起)。在调试器下,我注意到这两个 select/selectAll 方法不会在委托中触发 canPerformAction::... 这两个方法在哪里触发?
【问题讨论】:
-
查看这个答案(由我)以处理 iOS7 上的类似问题:disable-long-press-menu-in-text-area-input-uiwebview
标签: ios uiwebview contextmenu