以编程方式在contenteditable UIWebView中显示键盘

5

我的UIWebView加载了一个可编辑的HTML内容。我希望让UIWebView获得焦点并在其中显示键盘。

我使用了[self.webview becomeFirstResponder],但它不起作用。有没有其他方法可以解决这个问题?

谢谢。

4个回答

8

iOS 6 现在可以实现此功能。请参见 UIWebView 中的 boolean keyboardDisplayRequiresUserAction。一旦设置为 NO,您就可以使用 focus() 来设置光标。


这将使其聚焦,但实际上并不会弹出键盘。 - scord
将其设置为NO可以在Javascript中设置光标并将光标带上。您可以在元素上设置.focus(),键盘将出现。然而,WkWebView没有类似的选项。 - eliajf

2
在iOS 6及以上版本中,您需要进行以下两步操作来使Webview不需要用户手动激活键盘:1)将keyboardDisplayRequiresUserAction设置为NO;2)调用focus方法。代码如下:
self.webView.keyboardDisplayRequiresUserAction = NO; // put in viewDidLoad

- (BOOL)textFieldShouldReturn:(UITextField *)textField
{
        [self.webView
         stringByEvaluatingJavaScriptFromString:@"document.getElementsByTagName('body')[0].focus()"];
    return YES;
}

您可以使用 document.getElementById('someId').focus() 作为替代方法。我将 textField 设置为委托,并使用委托方法 textFieldShouldReturn,该方法在按下回车键时触发。


1

需要在窗口对象中设置“启动时可见”复选框 - 键盘将自动显示在输入字段上


1

UIWebView不可编辑,也无法使其成为第一个响应者。 但是您可以使用JavaScript来实现此目的,请尝试以下答案

{{link1:具有contentEditable(HTML编辑)和第一个响应者处理的UIWebView?}}


谢谢,我已经使用JavaScript将HTML内容设置为可编辑。但是我无法让UIWebView获得焦点。而您提供的链接没有关于在UIWebView中成为第一响应者的答案。您能否给我一些关于此的示例代码? - tangqiaoboy
jScriptString = [NSString stringWithFormat:@"var field = document.activeElement;" "field.value='%@';", symbol.data]; [myWebView stringByEvaluatingJavaScriptFromString:jScriptString]; jScriptString = [NSString stringWithFormat:@"document.activeElement.form.submit();"]; [myWebView stringByEvaluatingJavaScriptFromString:jScriptString]; - Dushyant Singh

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接