技术要点
html通过js向iOS原生传递消息
window.webkit.messageHandlers.InjectHTML.postMessage({title: "输入框失去焦点", message:input.target.value, id: input.target.id});
注:InjectHTML是和iOS原生约定的一个string标识
原生如何收到对应事件
初始化WKWebView
//初始化 Configuration
let configuration = WKWebViewConfiguration()
configuration.userContentController = WKUserContentController()
// 给Configuration 增加一个js script处理器
// 采用了中间层的因素,避免循环引用导致无法释放问题
//WKScriptMessageHandler
configuration.userContentController.add(ScriptHandler(delegate: self), name: ViewController.scriptKey)
//configuration.userContentController.add(self, name: ViewController.scriptKey)
webview = WKWebView(frame: frame, configuration: configuration)
view.addSubview(webview)
实现WKScriptMessageHandler协议