我已经从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;
有什么办法吗?
我找到了一个解决方案
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;
最近以来: 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中并不暴露。