Javascript 即使需要将webView contentEditable设置为true,如何阻止键盘显示?
我使用webView来显示文本内容,并尝试使用javascript来突出显示用户选择的文本。这在Javascript 即使需要将webView contentEditable设置为true,如何阻止键盘显示?,javascript,html,ios,cocoa-touch,uiwebview,Javascript,Html,Ios,Cocoa Touch,Uiwebview,我使用webView来显示文本内容,并尝试使用javascript来突出显示用户选择的文本。这在contentEditable=yes时成为可能,但也会在用户点击任何文本时打开键盘 如何使contentEditable=yes,但不显示键盘以使文本可编辑 编辑:下面是我用来突出显示的代码 - (void)highlight { NSString *currentColor = [webView stringByEvaluatingJavaScriptFromString:@"docum
contentEditable=yes
时成为可能,但也会在用户点击任何文本时打开键盘
如何使contentEditable=yes
,但不显示键盘以使文本可编辑
编辑:下面是我用来突出显示的代码
- (void)highlight {
NSString *currentColor = [webView stringByEvaluatingJavaScriptFromString:@"document.queryCommandValue('backColor')"];
if ([currentColor isEqualToString:@"rgb(255, 255, 0)"]) {
[webView stringByEvaluatingJavaScriptFromString:@"document.execCommand('backColor', false, 'white')"];
} else {
[webView stringByEvaluatingJavaScriptFromString:@"document.execCommand('backColor', false, 'yellow')"];
}
}
我在教程中找到了它。您需要使用WebKitFramwork中的WebEditingDelegate。然后你可以做:
-(BOOL)webView:(WebView *)shouldBeginEditingInDOMRange:(DOMRange *)range: {
return NO;
}
这是。多亏了这篇文章,我找到了这个问题的解决方案:
[self.webView stringByEvaluatingJavaScriptFromString:@"document.getElementById('target').setAttribute('contentEditable','true')"];
if ([currentColor isEqualToString:@"rgb(255, 255, 0)"]) {
[self.webView stringByEvaluatingJavaScriptFromString:@"document.execCommand('backColor', false, 'white')"];
} else {
[self.webView stringByEvaluatingJavaScriptFromString:@"document.execCommand('backColor', false, 'yellow')"];
}
[self.webView stringByEvaluatingJavaScriptFromString:@"document.getElementById('target').setAttribute('contentEditable','false')"];
我基本上只打开编辑足够长的时间,以便在webView中突出显示,然后在完成后立即将其关闭。可能不是最优雅的解决方案,但键盘从来没有出现过,突出显示就像一个符咒。我们可以获取您的javascript突出显示代码吗?也许我们可以找到一个替代方案。我用一些代码更新了我的答案。谢谢看起来正是我需要的,但我该如何使用它呢?Webkit不是我可以导入的东西,我如何注册为WebEditingDelegate?谢谢你的回答!嗯,它需要在UIWebView的子类上吗?在我的viewController上添加它会在Xcode中生成生成错误。谢谢你的帮助。你需要安装它。这是webkit.org/building/build.html链接。对不起,我忘记了错过的信息。所以我需要将WebKit与我的应用程序捆绑在一起,以防止键盘显示?似乎有点重:)