我想控制使用WKWebView时显示的键盘。
我有以下启动 webview 的快速代码:
let webView = WKWebView(frame: self.view.bounds, configuration: configuration)
webView.navigationDelegate = self
它将加载如下所示的 html:
<!DOCTYPE html>
<html>
<head>
<title>Test</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
</head>
<body>
<div class="inputElement textFieldInput">
<input type="text" id="textField" value="" data-clear-btn="true"/>
</div>
</body>
</html>
通常键盘由输入字段上的类型选项控制。 “num”代表数字键盘,“text”代表字母数字键盘。但我想拥有更多控制权。
我已经做了足够的研究,知道这不能通过使用文本框上的选项来完成。我非常期待编写修改打开 webview 的代码。
如何修改 swift 代码以允许我执行此操作?
理想情况下,我可以定义多个键盘并允许 html 代码像这样控制它们:<input type='customkb1'> and <input type='customkb2'>
我的直接需要是禁用键盘上的表情符号按钮,但我想要一个通用的解决方案,因为如果我可以定义一个特定于用户输入内容的键盘,我将能够真正提高我的应用程序的可用性。
以下是我们目前的发现: 这是我知道并用于应用程序 native 部分的技巧: https://stackoverflow.com/a/25861718/1885345
但它不适用于 webViews 这是从 WKWebView 指定键盘的方法: https://stackoverflow.com/a/28533488/1885345
但它没有设置键盘没有表情符号的选项 这就是我用来禁用第三方键盘的方法: https://stackoverflow.com/a/34863426/1885345
最佳答案
不错的挑战!到目前为止,我已经在 iPad 上对其进行了测试,并通过声明输入字段的 pattern
使其半工作(有一个警告):
<input type="text" pattern="[0-9]*" value="" data-clear-btn="true"/>
问题是键盘实际上首先弹出数字 View ,但它允许通过下方的 ABC
侧按钮切换字母数字(无表情符号) View 。
使用 Javascript,我将输入的值复制到另一个字段,Regex 实际上不会过滤掉 输入的字母数字字符。到目前为止一切顺利。
一旦您将 A-Za-z
(作为前缀或后缀)放入模式中,表情符号按钮就会恢复。
我已经 try catch UIResponder.keyboardWillShowNotification
但没有返回键盘对象,因为我当时想以编程方式设置它的 UIKeyboardType,但是这个属性显然只反射(reflect)了 UITextViews。
或者,您可以声明password
类型的输入字段,使用Javascript 清除点并将实际值显示到另一个不可编辑的字段...
如果我找到更优雅的方式,我会更新我的答案,因为已经很晚了。干杯。
编辑:显然只使用带有 ReactNative 的 TextInput
元素您可以直接将 keyboardType
设置为 ascii-capable
iOS 键盘,这将使我们从表情符号中解放出来。
关于ios - WKWebView 中的自定义键盘,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53152019/