#ios #swift #wkwebview
#iOS #быстрый #wkwebview ( веб — просмотр ) #swift #wkwebview
Вопрос:
Я загружаю HTML-документ из своего пакета в WKWebView. В этом примере html-документ содержит два раздела, id = red и id = green. Я хотел бы иметь возможность нажать на один из divs и вывести его идентификатор на консоль. Моя первая мысль — перевести прямоугольники div в прямоугольники экрана и прослушивать касания внутри этих прямоугольников. Есть какие-нибудь идеи?
Ответ №1:
Вы можете использовать WKScriptMessageHandler
для обмена данными веб-контент, загруженный в WKWebView
свой собственный код.
Измените свой HTML-файл и добавьте onclick
события в оба ваших divs:
<div id="red" onclick="redClick()"></div>
<div id="green" onclick="greenClick()"></div>
ваши функции javascript будут такими:
function redClick() {
window.webkit.messageHandlers.message.postMessage("red");
}
function greenClick() {
window.webkit.messageHandlers.message.postMessage("green");
}
Затем добавьте обработчик сообщений скрипта в свой WKWebView
, передавая вам контроллер просмотра как WKScriptMessageHandler
:
webView.configuration.userContentController.add(self, name: "message")
и реализуйте WKScriptMessageHandler
в вашем контроллере просмотра следующим образом:
extension MyViewController: WKScriptMessageHandler {
func userContentController(_ userContentController: WKUserContentController, didReceive message: WKScriptMessage) {
print(message.body)
}
}