2011-04-07 83 views
1

我想禁用WebView的contextmenu「重新加載」,「打開鏈接」,「在新窗口中打開鏈接」,「下載鏈接」等。 我試了很長時間,這個方法與contextMenuItemsForElement,但不管我怎麼試着不行 我真的覺得很傷心,希望有人能幫助我,我會很感激。如何禁用WebView的contextmenu?

下面是我的代碼:

@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 

爲什麼不工作?

+0

你確定你想要在iOS上做到這一點?聽起來像一個Mac OS API。 – mvds 2011-04-07 09:37:00

回答

2

我不認爲webView:contextMenuItemsForElements:可用於iPhone SDK(或至少公開)。

如果你有在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:方法。

+0

我做到了!真的非常感謝你,CSS沒有期待這樣的功能,但我仍然不明白爲什麼webView:contextMenuItemsForElements這個方法不會播放? iPhone不支持?只有Mac OS X? – Jasper 2011-04-07 10:16:30

+0

是的,這是一個Mac OS API。 – Jilouc 2011-04-07 10:27:19

+0

就是這樣!我必須承認我是一名新秀,但英語不好,很多事情都不明白。我感到非常困惑,因爲我在http://developer.apple.com/library/mac/#documentation/Cocoa/Reference/WebKit/Protocols/WebUIDelegate_Protocol/Reference/Reference.html找到webView:contextMenuItemsForElements:這個方法if這是Mac OS API,但爲什麼我可以使用webView:runJavaScriptAlertPanelWithMessage,webView:runJavaScriptConfirmPanelWithMessage等..方法?這不是Mac OS API嗎? – Jasper 2011-04-07 10:42:49