WKWebView 不会在 Xamarin 中显示 iOS 12 下的 doc、docx、png、txt
WKWebView wont show doc, docx, png, txt under iOS 12 in Xamarin
我已经从 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;
有什么想法吗?
最近,UIWebView
及其渲染器已被弃用。最好使用 WkWebViewRenderer
。它应该包含您可能需要的一切,以便开箱即用地打开这些类型的文件。如果您需要进一步自定义它,您可以简单地在其 OnElementChanged
覆盖中进行:
public class MyCustomWebView : WkWebViewRenderer
{
protected override void OnElementChanged(VisualElementChangedEventArgs e)
{
base.OnElementChanged(e);
// Customise it here
}
}
这样您就不需要手动构造和初始化 WkWebView
并使用 SetNativeControl()
方法将其添加为本机控件。一切都内置在此渲染器中。
注意:请记住,如果您使用的是最新的 Xamarin.Forms 版本,WebView 默认继承自 WkWebViewRenderer
,因此您无需明确更改它。您需要子类化 WkWebViewRenderer
,仅当您需要添加未在 Forms 中公开的额外配置时。
我找到了解决方案
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 更新到 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;
有什么想法吗?
最近,UIWebView
及其渲染器已被弃用。最好使用 WkWebViewRenderer
。它应该包含您可能需要的一切,以便开箱即用地打开这些类型的文件。如果您需要进一步自定义它,您可以简单地在其 OnElementChanged
覆盖中进行:
public class MyCustomWebView : WkWebViewRenderer
{
protected override void OnElementChanged(VisualElementChangedEventArgs e)
{
base.OnElementChanged(e);
// Customise it here
}
}
这样您就不需要手动构造和初始化 WkWebView
并使用 SetNativeControl()
方法将其添加为本机控件。一切都内置在此渲染器中。
注意:请记住,如果您使用的是最新的 Xamarin.Forms 版本,WebView 默认继承自 WkWebViewRenderer
,因此您无需明确更改它。您需要子类化 WkWebViewRenderer
,仅当您需要添加未在 Forms 中公开的额外配置时。
我找到了解决方案
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;