在Xamarin的iOS 12下,WKWebView无法显示doc、docx、png、txt。

问题描述 投票:0回答:1

我已经从UIWebView更新到WKWebView。在iOS 13.4.1(模拟器和iPad)和iOS 12.4.7的模拟器中都能正常工作,但WKWebView在真正的iPad上一直是白色的。

        WKWebViewConfiguration webConfiguration = new WKWebViewConfiguration();
        webConfiguration.Preferences.JavaScriptEnabled = false;
        WKWebView wkWebView = new WKWebView(Bounds, webConfiguration);
        SetNativeControl(wkWebView);

        wkWebView.LoadRequest(new NSUrlRequest(new NSUrl(localDocUrl, false)));
        wkWebView.AutoresizingMask = UIViewAutoresizing.FlexibleDimensions;

有什么办法吗?

ios xamarin ipad uiwebview wkwebview
1个回答
1
投票

我找到了一个解决方案

WKWebViewConfiguration webConfiguration = new WKWebViewConfiguration();
webConfiguration.Preferences.JavaScriptEnabled = false;
WKWebView wkWebView = new WKWebView(Bounds, webConfiguration);
SetNativeControl(wkWebView);

wkWebView.LoadFileUrl(new NSUrl(localDocUrl, false), new NSUrl(localDocUrl, false));
wkWebView.AutoresizingMask = UIViewAutoresizing.FlexibleDimensions;

0
投票

最近以来: UIWebView 及其渲染器已被废弃。最好是使用 WkWebViewRenderer. 它应该配备了一切,你可能需要为了打开这些类型的文件,开箱即用。如果你需要进一步定制它,你可以简单地做到这一点,在它的。OnElementChanged 覆盖。

public class MyCustomWebView : WkWebViewRenderer 
{
    protected override void OnElementChanged(VisualElementChangedEventArgs e)
    {
        base.OnElementChanged(e);
        // Customise it here
    }
}

这样一来,你就不需要手动构建和初始化 WkWebView 并将其作为一个本地控件添加到 SetNativeControl() 方法。所有的东西都是在这个渲染器中内置的。

NB: 请注意,如果您使用的是最新的Xamarin.Forms版本,WebView默认继承于 WkWebViewRenderer所以你不需要明确地改变它。你需要将 WkWebViewRenderer只有当你需要添加额外的配置时,才会使用,而这些配置在Forms中并不暴露。

© www.soinside.com 2019 - 2024. All rights reserved.