169 похожих чатов

Вот фулл пример public class ExtendedWebViewRenderer : ViewRenderer<ExtendedWebView, WKWebView>

{
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);
}
}
}
}

1 ответов

16 просмотров

попробовал сразу у себя в апе, не заработало, думаю дай создам пустой проект копи паст код который вы прислали и на странице на которой присутствует только кнопка открывающая табину, после клика на нее ничего не происходит

Похожие вопросы

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта