将数据从 UISearchBar 发送到 jQuery
Send data from UISearchBar to jQuery
我有一个显示 index.html
的 WKWebView
,它运行 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)
}
}
我有一个显示 index.html
的 WKWebView
,它运行 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)
}
}