web-dev-qa-db-ja.com

リンククリックリスナーのWKWebView?

WKWebViewクラスにonLinkClickListenerのようなものがありますか?私はそれをグーグルで試しましたが、何も見つかりませんでした。また、類似のタイプのstackoverflowに関するいくつかの未回答の質問を見つけました。

LinkClickListenerが必要な理由は、リンクをクリックしてもページがまだロードされなかった場合、Webサイトがロードされないためです。また、ページがリスナーでロードされるときに、ファンシーなロード画面を作成することもできます。

11
Samuel Kodytek

このようにできます

wKNavigationDelegateをクラスに追加します

class ViewController: UIViewController, WKNavigationDelegate

ナビゲーションデリゲートを設定する

yourWKWebview.navigationDelegate = self

その後、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