通过调用WKWebview输入字段在按钮单击上显示键盘

时间:2017-06-21 19:27:51

标签: javascript iphone swift

我一直在搜索这个问题并且没有任何运气,如何通过点击按钮在iphone上显示键盘,并将焦点设置在WKWebview输入栏上?

我有这个代码初始化一个按钮并在swift 3中调用一个函数

let keyBoardButton = UIButton (type: .custom)
    keyBoardButton.setImage(UIImage(named: "keyboard.png"), for: UIControlState.normal)
    keyBoardButton.addTarget(self, action: #selector(ViewController.showKeyboard), for: UIControlEvents.touchUpInside)

    keyBoardButton.frame = CGRect(x: 0, y: 0, width: 25, height: 25)

我正在调用这个函数

    func showKeyboard() {

    self.delay { [weak self] in
        let javascript = " document.getElementById('myID').focus();"

        self?.webView?.evaluateJavaScript(javascript) { [weak self] (result, error) in
            if let error = error {
                print(error)
            } else if let result = result{
                print(result)
            }

        }
    }
}

我将注意力集中在我的输入字段上,但我不知道如何显示键盘,有谁可以帮忙解决这个问题?

2 个答案:

答案 0 :(得分:0)

您需要使用evaluateJavaScript上的WKWebView方法在关注文本字段的页面上运行一些javascript。

javascript将取决于页面,但它可能是这样的。

let js = "document.getElementById(\"MY_TEXTFIELD_ID\").focus();"
webView.evaluateJavaScript(js)

编辑:经过一番挖掘,看来这是WebKit中的一个已知错误。 https://bugs.webkit.org/show_bug.cgi?id=142757

答案 1 :(得分:0)

我遇到了同样的问题

使用后 Great Answer将Javascript注入您的WebKitView,只需使用

document.getElementById('myID').focus();

document.getElementsByClassName('myClass').focus();

将focus()属性添加到输入