【发布时间】:2019-08-27 15:31:09
【问题描述】:
我有一个 Xamarin 表单项目,我需要在其中设置某些配置以允许文件访问。在原生 xamarin ios 项目中,它是通过 WKWebviewConfiguration 设置的,如,
_scormWKPreferences = new WKPreferences
{
JavaScriptEnabled = true
};
ClearCookies();
_scormWKPreferences.SetValueForKey(NSObject.FromObject(true), (NSString)"allowFileAccessFromFileURLs");
// _scormWKPreferences.SetValueForKey(NSObject.FromObject(true), (NSString)"allowUniversalAccessFromFileURLs");
_scormWKWebconfiguration = new WKWebViewConfiguration();
_scormWKWebconfiguration.Preferences = _scormWKPreferences;
_scormWKUserContentController = new WKUserContentController();
_scormWKUserContentController.AddScriptMessageHandler(this, WKSCRIPT_HANDLER);
_scormWKWebconfiguration.UserContentController = _scormWKUserContentController;
CGRect viewRect = new CGRect(0, 0, View.Frame.Width, View.Frame.Height);
_courseWKWebview = new WKWebView(viewRect, _scormWKWebconfiguration);
我也必须在表单项目中实现相同的目标。目前,我在 iOS 模块中添加了自定义渲染器,但无法设置配置。请在下方找到 CustomRenderer。
[assembly: ExportRenderer(typeof(WebView), typeof(ScholarApp.Droid.Reader.Scorm.ScormCustomRenderer))]
namespace ScholarApp.Droid.Reader.Scorm
{
public class ScormCustomRenderer : Xamarin.Forms.Platform.iOS.WkWebViewRenderer
{
protected override void OnElementChanged(VisualElementChangedEventArgs e)
{
base.OnElementChanged(e);
if (e.OldElement == null && e.NewElement != null)
{
WKPreferences wkPreferences = new WKPreferences
{
JavaScriptEnabled = true
};
wkPreferences.SetValueForKey(NSObject.FromObject(true), (NSString)"allowFileAccessFromFileURLs");
WKWebViewConfiguration wkConfig = new WKWebViewConfiguration();
wkConfig.Preferences = wkPreferences;
WKWebView wkWebView = new WKWebView(Frame, wkConfig);
}
}
}
}
如何将此配置设置为我的 WebView?
【问题讨论】:
-
您好,无法将本地内容加载到 WKWebview 是什么意思。您可以显示更多有关本地内容含义的代码。
标签: xamarin.forms xamarin.ios wkwebview xamarin.forms.webview