在 Xamarin 中,如何处理 WKWebView ShouldStartLoad 事件

Bri*_*ice 6 ios xamarin wkwebview

使用 UIWebView 拦截 ShouldStartLoad 事件,我所要做的就是:

_webView.ShouldStartLoad += (webView, request, navigationType) => { return true }

我如何使用 WKWebView 处理这个问题?

小智 11

您需要在 WKNavigationDelegate 子类中覆盖DecidePolicy

public class WebNavigationDelegate : WKNavigationDelegate
{

    ...

    public override void DecidePolicy(WKWebView webView, WKNavigationAction navigationAction, Action<WKNavigationActionPolicy> decisionHandler)
    {
        var url = navigationAction.Request.Url;
        if (true) //Whatever your test happens to be
        {
            decisionHandler(WKNavigationActionPolicy.Allow);
        }
        else
        {
            decisionHandler(WKNavigationActionPolicy.Cancel);
        }
    }

    ...

}
Run Code Online (Sandbox Code Playgroud)

然后将 webview 的导航委托设置为您的新类。

_webView.NavigationDelegate = new WebNavigationDelegate(this);
Run Code Online (Sandbox Code Playgroud)