Iphone UIWebView-创建自定义上下文菜单?
我在应用程序中添加了UIWebView控件 为了禁用默认上下文菜单,我实现了webViewDidFinishLoadIphone UIWebView-创建自定义上下文菜单?,iphone,css,uiwebview,contextmenu,Iphone,Css,Uiwebview,Contextmenu,我在应用程序中添加了UIWebView控件 为了禁用默认上下文菜单,我实现了webViewDidFinishLoad - (void) webViewDidFinishLoad:(UIWebView *)theWebView { NSString *varMySheet = @"var mySheet = document.styleSheet[0];"; NSString *addCSSRule = @"function addCSSRule(selector, newRule
- (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';"];
它不起作用。
谢谢。您能解释一下为什么要使用这些javascript吗? 仅仅做以下这些对你来说是不够的
- (void) webViewDidFinishLoad:(UIWebView *) sender {
// Disable the defaut actionSheet when doing a long press
[webView stringByEvaluatingJavaScriptFromString:@"document.body.style.webkitTouchCallout='none';"];
[webView stringByEvaluatingJavaScriptFromString:@"document.documentElement.style.webkitTouchCallout='none';"];
}
您只需要对UIWebView进行子类化。在您的自定义视图中,只需实现方法canPerformAction:Wissender,如下所示:
- (BOOL)canPerformAction:(SEL)action withSender:(id)sender {
return NO;
}
然后所有菜单项都将消失。如果您只是想显示一些项目,那么应该为指定的项目返回YES
- (BOOL)canPerformAction:(SEL)action withSender:(id)sender {
BOOL ret = NO;
if (action == @selector(copy:)) ret = YES;
return ret;
}
当您在视图中长按一个单词时,只会显示“复制”。您的方法名为
webViewDidLoadFinished:
,而不是webViewDidFinishLoad:
。这是问题和/或代码中的打字错误吗?很抱歉问这个问题,但我认为需要问一下。您是否设置了UIWebView
委托
属性,是否确定代码正在执行?确定。我添加了[webView setDelegate:self]。我刚刚注意到,这不适用于最新的iOS测试版,而适用于iOS3和iOS4。。。您使用的是iOS测试版吗?