Xcode 6 Swift WKWebView键盘设置

时间:2014-11-11 19:01:29

标签: ios swift

我正在使用WKWebView加载网站,一切正常。但是,我没有像处理文本字段那样访问键盘属性。有人能指出一些资源,可以帮助我访问网络上键盘的属性(通过gui或编程方式)吗?

2 个答案:

答案 0 :(得分:1)

Text Programming Guide for iOS有一个名为Configuring the Keyboard for Web Views的部分,其中说明了以下内容:

  

虽然UIWebView类不直接支持UITextInputTraits协议,但您可以为文本输入元素配置一些键盘属性。例如,您可以在输入元素的定义中包含autocorrectautocapitalize属性,以指定键盘的行为,如以下示例所示。

<input type="text" size="30" autocorrect="off" autocapitalize="on">
     

当用户触摸网页中的文本字段时,您还可以控制显示哪种类型的键盘。要显示电话键盘,电子邮件键盘或URL键盘,请分别对输入元素的type属性使用telemailurl个关键字。要显示数字键盘,请将pattern属性的值设置为&#34; [0-9]*&#34;或&#34; \d*&#34;。

     

这些关键字和模式属性是HTML 5的一部分,可在iOS中使用。以下列表显示了如何显示每种类型的键盘,包括标准键盘。

     

文字:<input type="text"></input>
  电话:<input type="tel"></input>
  网址:<input type="url"></input>
  电子邮件:<input type="email"></input>
  邮政编码:<input type="text" pattern="[0-9]*"></input>

当然,这只能在有限的几种情况下解决一些非常具体的问题,但据我所知,即使使用WKWebView,我们仍然需要处理这些问题。

我希望有人能够证明我的错误并让我们知道如何添加键盘配件视图,或者当它专注于iOS应用中的网页视图中的表单元素时更改键盘的外观

答案 1 :(得分:0)

我有一个HTML身份验证页面,我在WKWebView中显示。自动更正/建议栏显示在用户名字段的键盘上方。由于我无法控制HTML,因此我使用以下Swift 3代码和javascript来添加自动更正属性,如上所述:

    var webView: WKWebView!

override func loadView() {

    let autocorrectJavaScript = "var inputTextElement = document.getElementById('username');"
    + "   if (inputTextElement != null) {"
    + "     var autocorrectAttribute = document.createAttribute('autocorrect');"
    + "     autocorrectAttribute.value = 'off';"
    + "     inputTextElement.setAttributeNode(autocorrectAttribute);"
    + "   }"
    let userScript = WKUserScript(source: autocorrectJavaScript, injectionTime: .atDocumentEnd, forMainFrameOnly: false)
    let webConfiguration = WKWebViewConfiguration()
    webConfiguration.userContentController.addUserScript(userScript)
    webView = WKWebView(frame: .zero, configuration: webConfiguration)
    view = webView
}

注意:键盘上方的栏仍然保留,有其他选项,而不是建议。