在UIWebView中,我想要某個類div元素僅顯示一個自定義上下文菜單項。所以,我實現在一個UIWebView委託canPerformAction ::方法是這樣的: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,大多數的菜單項不顯示(剪切:副本:過去: ...)但選擇:並選擇所有:仍然顯示(與myAction一起)。在調試器下,我注意到這兩個select/selectAll方法不會在代理中觸發canPerformAction :: ...這兩個方法在哪裏被觸發?
簽出這個答案(由我)處理類似的問題在iOS7上:[disable-long-press-menu-in-text-area-input-uiwebview](http://stackoverflow.com/questions/25263687/disable-long-press-menu-in-text-area-input-uiwebview) –