Javascript 即使需要将webView contentEditable设置为true,如何阻止键盘显示?

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

我使用webView来显示文本内容,并尝试使用javascript来突出显示用户选择的文本。这在
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与我的应用程序捆绑在一起,以防止键盘显示?似乎有点重:)