jquery - 将数据从 UISearchBar 发送到 jQuery
问题描述
我有一个WKWebView
显示index.html
哪个运行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)
}
}
推荐阅读
- python - 如何将整数作为字符串存储在 CSV 文件 Python 中
- css - 如何让 SVG 像 Flexbox 一样
- node.js - Node js - 每当我安装模块时,cmd 都会崩溃
- google-sheets - 我可以在查询中引用一个单元格吗?
- ios - 您将如何在 SwiftUI 中编写图像(例如 PNG)并将其保存到本地桌面?
- reactjs - 如何在自动完成的onChange中传递索引 - React Material UI
- python - ImportError:无法从 Raspi-pi 4 上的“tensorflow.python.eager.context”导入错误中导入名称“get_config”
- google-chrome - 使用页面诊断移动 Safari 问题
- .net - 在与 SQL Server 相同的容器中使用 .NET Core 应用程序
- firebase - firebase JS SDK v8 何时设置为弃用