Вам необходимо добавить метод javascript в ваш HTML-файл, который будет передавать значения форм в вашем быстром коде. Вы можете сделать это с помощью WKScriptMessageHandler.
В вашем HTML-файле добавьте следующий код. Я назвал его index.html и поместил локально в приложение.
<head>
<script type="text/javascript">
function OnLoadEvent() {
var test = document.getElementsByName("form1")[0].children
var values = {};
Array.from(test).forEach(input => {
values[input.getAttribute("name")] = input.value;
});
window.webkit.messageHandlers.myApp.postMessage({values});
}
</script>
</head>
window.webkit.messageHandlers.myApp.postMessage ({значения}) ; отправит со значения из JavaScript в Swift. Здесь myApp - это имя обработчика, который я добавил в быстрый код.
Вот быстрый код
class ViewController: UIViewController, WKScriptMessageHandler {
func userContentController(_ userContentController: WKUserContentController, didReceive message: WKScriptMessage) {
let body = message.body
if let dict = body as? Dictionary<String, AnyObject> {
let formData = dict["values"] as! [String: AnyObject]
for (fieldName, fieldValue) in formData {
print("fieldName: \(fieldName) fieldValue: \(fieldValue)")
}
}
}
override func viewDidLoad() {
super.viewDidLoad()
let config = WKWebViewConfiguration()
config.userContentController.add(self, name: "myApp")
let wkWebView = WKWebView(frame: self.view.frame, configuration: config)
let url = Bundle.main.url(forResource: "index", withExtension: "html")!
wkWebView.loadFileURL(url, allowingReadAccessTo: url)
let request = URLRequest(url: url)
wkWebView.load(request)
self.view.addSubview(wkWebView)
}
}