【问题标题】:WKWebView doesn't display loaded contentWKWebView 不显示加载的内容
【发布时间】:2020-07-31 15:53:34
【问题描述】:

我正在尝试使用 WKWebView 在 Xamarin IOS 应用程序中显示一些内容。代码非常简单:

public override void ViewDidLoad()
{
    base.ViewDidLoad();
    var simpleWebView = new WKWebView(View.Frame, new WKWebViewConfiguration());
    Add(simpleWebView);

    simpleWebView.NavigationDelegate = new WKWebViewDelegate();
    simpleWebView.LoadRequest(new NSUrlRequest(new NSUrl("https://myurl_here")));
}

public class WKWebViewDelegate : WKNavigationDelegate
{
    public override void DidFinishNavigation(WKWebView webView, WKNavigation navigation)
    {
        WKJavascriptEvaluationResult handler = (NSObject result, NSError err) => {
            if (err != null)
            {
                //Do smth
            }
            if (result != null)
            {
                //Do smth
            }
        };
        webView.EvaluateJavaScript("(function() { return ('<html>' + document.getElementsByTagName('html')[0].innerHTML + '</html>'); })(); ", handler);
    }
}

这在 iOS 13 的模拟器中运行良好,但在 iOS 11 中,尽管在 NavigationDelegate 中我可以检查来自 web 的内容是否已加载且没有错误,但我却得到了空白屏幕。 iOS 11 中的 WKWebView 有什么问题?

【问题讨论】:

    标签: ios xamarin wkwebview


    【解决方案1】:

    我不使用破坏性,但在本机 swift 代码中,实例化委托是错误的:您应该委托任何现有对象,通常是控制器。在该控制器中,您将被调用。

    另见此处: How to check if WkWebView finish loading in Objective-C?

    【讨论】:

    • 它工作正常,并且在 simpleWebView 完成加载内容后调用了 DidFinishNavigation。
    • 看来我找到了解决方案。问题可能与我尝试加载的页面内容有关。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-20
    相关资源
    最近更新 更多