我為我的 WebView 創建了自定義渲染器,因為我需要設定屬性 CustomUserAgent。但是對于我的 CustomWebView 事件 Navigated 沒有被觸發。據我了解,我需要設定 NavigationDelegate 但找不到任何作業示例。這是我的代碼:
[assembly: ExportRenderer(typeof(CustomWebView), typeof(CustomWebViewRenderer))]
namespace DesktopClient.MacOS.CustomRenderers
{
public class CustomWebViewRenderer : ViewRenderer<CustomWebView, WKWebView>
{
private WKWebView wkWebView;
protected override void OnElementChanged(ElementChangedEventArgs<CustomWebView> e)
{
base.OnElementChanged(e);
if (this.Control == null)
{
WKWebViewConfiguration config = new();
this.wkWebView = new WKWebView(this.Frame, config)
{
NavigationDelegate = new WKNavigationDelegate()
};
this.SetNativeControl(this.wkWebView);
WKWebViewContainer.WKWebView = this.wkWebView;
}
if (e.NewElement != null)
{
UrlWebViewSource source = (UrlWebViewSource)e.NewElement.Source;
if (source != null)
{
this.Control.LoadRequest(new NSUrlRequest(new NSUrl(source.Url)));
}
this.Control.CustomUserAgent = e.NewElement.UserAgent;
this.wkWebView.NavigationDelegate = new WKNavigationDelegate();
}
}
}
}
uj5u.com熱心網友回復:
創建一個繼承自WKNavigationDelegate并分配給的新類Webview.NavigationDelegate,然后您可以像DidFinishNavigation在新類中一樣覆寫該方法。
示例代碼
NavigationDelegate = new MyDelegate();
public class MyDelegate : WKNavigationDelegate {
public override void DidFinishNavigation(WKWebView webView, WKNavigation navigation)
{
}
}
但是,我發現該方法DidFinishNavigation在初始加載時不會觸發,它只能在我們導航到其他網頁時觸發。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/361138.html
標籤:苹果系统 沙马林 xamarin.mac
