如何禁用WebView的上下文菜单?

时间:2011-04-07 09:15:24

标签: iphone objective-c ios webview

我想禁用WebView的上下文菜单“Reload”,“Open Link”,“在新窗口中打开链接”,“下载链接”等。 我已经尝试了很长时间,这个方法使用了contextMenuItemsForElement,但不管我怎么尝试都不行 我真的很难过,我希望有人可以帮助我,我会非常感激。

以下是我的代码:

@class WebView;
@interface UIWebView (Client)
- (NSArray *)webView:(WebView *)sender contextMenuItemsForElement:(NSDictionary *)element defaultMenuItems:(NSArray *)defaultMenuItem;
@end

@implementation UIWebView (Client)
- (NSArray *)webView:(WebView *)sender contextMenuItemsForElement:(NSDictionary *)element 
    defaultMenuItems:(NSArray *)defaultMenuItems
{
    NSLog(@"contextMenuItemsForElement");
    return nil;
}

@end

为什么不工作?

1 个答案:

答案 0 :(得分:4)

我认为iPhone SDK中不提供webView:contextMenuItemsForElements:(或至少是公开的)。

如果您可以控制html / css代码,则可以将此规则放在css中

a {
    -webkit-touch-callout: none !important;
}

如果不可能,请尝试

[yourWebView stringByEvaluatingJavascriptFromString:@"var a = document.getElementsByTagName('a'); for (var i = 0; i < a.length; i++) { a.style.WebkitTouchCallout = 'none'; }"];

webViewDidFinishLoad:方法中。