将数据从 UISearchBar 发送到 jQuery

Send data from UISearchBar to jQuery

我有一个显示 index.htmlWKWebView,它运行 demo.js

索引页面只显示一个 HTML 表单,用户可以在其中输入字符,但我需要用 UISearchBar 替换它。

目前在 jQuery(文档准备就绪时),我有:

$('.js-char-form').on('submit', function(evt) {
     evt.preventDefault();
     updateCharacter(); // does something important
});

我该如何使用 UISearchBar 来解决这个问题?

我在这里误用了 jQuery 吗?

在视图控制器中,您将需要一个用于单击搜索栏的函数。

func searchBarSearchButtonClicked(_ searchBar: UISearchBar) {
    searchBar.resignFirstResponder() // hide keyboard
    webView.evaluateJavaScript("changeCharacter('\(searchBar.text ?? "alternative character")')") { (result, error) in
        if error == nil {
            // success, do nothing...
        }
    }
}

然后在 demo.js 中,您将拥有

function changeCharacter(newCharacter) {
    // do something with newCharacter...
}

本质上,所有这一切都是 运行 一个 JavaScript 函数,但用 Swift 上下文中定义的内容替换参数。

此外,如果您想在使用搜索栏后隐藏键盘,可以使用扩展程序。所以,再次在视图控制器中,你会写:

extension UIViewController {
    func hideKeyboard() {
        let tap: UITapGestureRecognizer = UITapGestureRecognizer(target: self, action: #selector(UIViewController.dismissKeyboard))
        tap.cancelsTouchesInView = false
        view.addGestureRecognizer(tap)
    }

    @objc func dismissKeyboard() {
        view.endEditing(true)
    }
}