我正在使用WKWebView加载网站,一切正常。但是,我没有像处理文本字段那样访问键盘属性。有人能指出一些资源,可以帮助我访问网络上键盘的属性(通过gui或编程方式)吗?
答案 0 :(得分:1)
Text Programming Guide for iOS有一个名为Configuring the Keyboard for Web Views的部分,其中说明了以下内容:
虽然UIWebView类不直接支持UITextInputTraits协议,但您可以为文本输入元素配置一些键盘属性。例如,您可以在输入元素的定义中包含
autocorrect
和autocapitalize
属性,以指定键盘的行为,如以下示例所示。<input type="text" size="30" autocorrect="off" autocapitalize="on">
当用户触摸网页中的文本字段时,您还可以控制显示哪种类型的键盘。要显示电话键盘,电子邮件键盘或URL键盘,请分别对输入元素的type属性使用
tel
,url
个关键字。要显示数字键盘,请将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
}
注意:键盘上方的栏仍然保留,有其他选项,而不是建议。