web-dev-qa-db-fra.com

WKWebView sur l'écouteur de clic de lien?

Existe-t-il quelque chose comme un onLinkClickListener dans la classe WKWebView? J'ai essayé de le googler mais je n'ai rien trouvé, j'ai également trouvé des questions sans réponse sur stackoverflow de type simillar.

La raison pour laquelle j'ai besoin d'un linkClickListener est que, lorsque je clique sur un lien et que la page ne se charge pas encore, il ne charge pas le site Web. Je pourrais également créer un écran de chargement sophistiqué, lorsque la page se charge avec l'auditeur.

11
Samuel Kodytek

Vous pouvez le faire comme ça

ajoutez WKNavigationDelegate à votre classe

class ViewController: UIViewController, WKNavigationDelegate

définir un délégué de navigation

yourWKWebview.navigationDelegate = self

après cela, vous pourrez utiliser la fonction decidePolicyFor navigationAction

 func webView(_ webView: WKWebView, decidePolicyFor navigationAction: WKNavigationAction, decisionHandler: @escaping (WKNavigationActionPolicy) -> Void) {
        if navigationAction.navigationType == WKNavigationType.linkActivated {
            print("link")

            decisionHandler(WKNavigationActionPolicy.cancel)
            return
        }
        print("no link")
        decisionHandler(WKNavigationActionPolicy.allow)
 }
33
Vitaly Migunov