{
private Func<string, bool> onSuccess;
WKWebView webView;
public ExtendedWebViewRenderer()
{
}
protected override void OnElementChanged(ElementChangedEventArgs<ExtendedWebView> e)
{
base.OnElementChanged(e);
if (Control == null)
{
webView = new WKWebView(Frame, new WKWebViewConfiguration() { AllowsInlineMediaPlayback = true });
SetNativeControl(webView);
}
if (e.OldElement != null)
{
e.OldElement.PropertyChanged -= OnElementPropertyChanged;
}
if (e.NewElement != null)
{
e.NewElement.PropertyChanged += OnElementPropertyChanged;
}
}
protected override void OnElementPropertyChanged(object sender, PropertyChangedEventArgs e)
{
base.OnElementPropertyChanged(sender, e);
try
{
if (Control == null)
return;
if (e.PropertyName == DataKey.Source)
{
var source = (Element as ExtendedWebView)?.Source;
if (source is HtmlWebViewSource)
{
Control.LoadHtmlString((source as HtmlWebViewSource).Html, null);
}
else
{
Control.LoadRequest(new NSUrlRequest(new NSUrl((source as UrlWebViewSource).Url)));
}
onSuccess = ((ExtendedWebView)Element).OnSuccessCommand;
webView.NavigationDelegate = new ExtendedWebViewDelegate(onSuccess);
SetNativeControl(webView);
}
}
catch (Exception ex)
{
}
}
}
public class ExtendedWebViewDelegate : WKNavigationDelegate
{
private readonly Func<string, bool> _onSuccess;
public ExtendedWebViewDelegate(Func<string, bool> onSuccess)
{
_onSuccess = onSuccess;
}
public override void DecidePolicy(WKWebView webView, WKNavigationAction navigationAction, Action<WKNavigationActionPolicy> decisionHandler)
{
var url = navigationAction.Request.Url.ToString();
if (_onSuccess == null || url.Contains("/dashboard"))
{
decisionHandler(WKNavigationActionPolicy.Allow);
}
else
{
if (_onSuccess.Invoke(url))
{
decisionHandler(WKNavigationActionPolicy.Allow);
}
else
{
decisionHandler(WKNavigationActionPolicy.Cancel);
}
}
}
}
попробовал сразу у себя в апе, не заработало, думаю дай создам пустой проект копи паст код который вы прислали и на странице на которой присутствует только кнопка открывающая табину, после клика на нее ничего не происходит
Обсуждают сегодня