【发布时间】:2019-05-24 10:59:49
【问题描述】:
我正在尝试为 iOS 和 Android 创建自定义 WebView 渲染器。我的主要目标是让 WebView 适合它的 HTML 内容;
谷歌搜索后,我很快意识到这只能通过为 iOS 和 Android 制作自定义渲染器来实现。
我正在使用需要委托的解决方案。您可以查看解决方案here。但是,此解决方案于 2016 年发布,因此我收到此编译时错误消息:“'Delegate' 在 iOS 12.0 中已弃用。不再受支持;请采用 'WKWebView'。
PostWebView.xaml
<WebView xmlns="http://xamarin.com/schemas/2014/forms" xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" x:Class="Yoors.Views.Templates.PostWebView" x:Name="WebViewer" BackgroundColor="White" Margin="0, 10, 0, 0" VerticalOptions="FillAndExpand" HeightRequest="1000">
<WebView.Source>
<HtmlWebViewSource Html="{Binding Data.Content}" />
</WebView.Source>
</WebView>
CustomWebViewRenderer.cs
public class CustomWebViewRenderer : WebViewRenderer
{
protected override void OnElementChanged(VisualElementChangedEventArgs e)
{
base.OnElementChanged(e);
Delegate = new CustomUIWebViewDelegate(this);
}
}
CustomUIWebViewDelegate.cs
public class CustomUIWebViewDelegate : UIWebViewDelegate
{
CustomWebViewRenderer _webViewRenderer;
public CustomUIWebViewDelegate(CustomWebViewRenderer webViewRenderer = null)
{
_webViewRenderer = _webViewRenderer ?? new CustomWebViewRenderer();
}
public override async void LoadingFinished(UIWebView webView)
{
var wv = _webViewRenderer.Element as PostWebView;
if (wv != null)
{
await System.Threading.Tasks.Task.Delay(100); // wait here till content is rendered
wv.HeightRequest = (double)webView.ScrollView.ContentSize.Height;
}
}
}
如何根据我的代码采用WKWebView?
【问题讨论】:
标签: c# ios xamarin webview wkwebview