Я пытаюсь создать пользовательский рендерер WebView для iOS и Android.Моя главная цель - сделать так, чтобы WebView соответствовал содержимому HTML;
После поиска в Google, я скоро понял, что это возможно только путем создания пользовательских средств визуализации как для iOS, так и для Android.
Я использую решение, которое требует делегата.Вы можете посмотреть решение здесь .Тем не менее, это решение было опубликовано в 2016 году, и поэтому я получаю это сообщение об ошибке времени компиляции: «« Делегат »устарел в 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 в соответствии с моим кодом?