2011-04-07 2 views
1

Я хочу отключить контекстное меню WebView «Обновить», «Открыть ссылку», «Открыть ссылку в новом окне», «Загрузить ссылку» и т. Д. Я пробовал очень долгое время, этот метод с contextMenuItemsForElement, но неважно как я стараюсь, не работает Мне действительно очень грустно, я надеюсь, что кто-то может мне помочь, я был бы очень благодарен.Как отключить контекстное меню WebView?

Ниже мой код:

@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

ответ

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

+0

Да, это Mac OS API. – Jilouc

+0

Вот и все! Должен признаться, что я был новичком, но английский не очень хорош, поэтому многие вещи не понимают. Я очень смущен, потому что я был в http://developer.apple.com/library/mac/#documentation/Cocoa/Reference/WebKit/Protocols/WebUIDelegate_Protocol/Reference/Reference.html find webView: contextMenuItemsForElements: этот метод, если Это API Mac OS, но почему я могу использовать webView: runJavaScriptAlertPanelWithMessage, webView: runJavaScriptConfirmPanelWithMessage и т. Д. Методы? это не Mac OS API? – Jasper

Смежные вопросы