Реагировать на касания элементов html с помощью wkebview

#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)
    }
}