【发布时间】:2011-11-12 21:04:49
【问题描述】:
我将 UIWebView 控件添加到我的应用程序中。
为了禁用默认上下文菜单,我实现了 webViewDidFinishLoad。
- (void) webViewDidFinishLoad:(UIWebView *)theWebView {
NSString *varMySheet = @"var mySheet = document.styleSheet[0];";
NSString *addCSSRule = @"function addCSSRule(selector, newRule) {"
"if (mySheet.addRule) {"
"mySheet.addRule(selector, newRule);"
"} else {"
"ruleIndex = mySheet.cssRules.length;"
"mySheet.insertRule(selector + '{' + newRule + ';}', ruleIndex;"
"}"
"}";
...
NSString *insertRule = @"addCSSRule('body', '-webkit-touch-callout: none;')";
[webView stringByEvaluatingJavaScriptFromString:varMySheet];
[webView stringByEvaluatingJavaScriptFromString:addCSSRule];
[webView stringByEvaluatingJavaScriptFromString:insertRule];
...
}
但是 webview 的上下文菜单并没有消失。任何人都可以帮助我。
我也试过
[webView stringByEvaluatingJavaScriptFromString:@"document.body.style.webkitTouchCallout='none';"];
没有用。 谢谢。
【问题讨论】:
-
你的方法被命名为
webViewDidLoadFinished:,而不是webViewDidFinishLoad:。这是问题和/或代码中的错字吗? -
很抱歉问这个问题,但我认为需要问。您是否设置了
UIWebViewdelegate属性并且确定正在执行代码? -
当然。我添加 [webView setDelegate:self]。
标签: iphone css uiwebview contextmenu