Xamarin.ios HybridWebView未触发LoadFinished事件

Xamarin.ios HybridWebView未触发LoadFinished事件,xamarin.ios,xamarin.forms,Xamarin.ios,Xamarin.forms,我正在开发我的第一个Xamarin.IOS应用程序,我想检索webview中加载的HTML页面。为了实现这一点,我参考了Google和Xamarin论坛并实现了以下步骤,但仍然没有触发LoadFinished事件。谁能帮我解决这个问题 使AppDelegate从XFormsApplication Legate扩展 在FinishedLaunching事件中,我有以下一组代码 你能帮我一下吗?如果你把webview.LoadFinished+=webview\u LoadFinished行移到这行

我正在开发我的第一个Xamarin.IOS应用程序,我想检索webview中加载的HTML页面。为了实现这一点,我参考了Google和Xamarin论坛并实现了以下步骤,但仍然没有触发LoadFinished事件。谁能帮我解决这个问题

  • 使AppDelegate从XFormsApplication Legate扩展
  • 在FinishedLaunching事件中,我有以下一组代码

  • 你能帮我一下吗?

    如果你把webview.LoadFinished+=webview\u LoadFinished行移到这行下面:webview=newhybridwebview();LoadFinished my将在事件连接之前被调用。嗨,Adam,我根据你的建议移动了事件初始化代码,但事件仍然没有被触发。我正在使用Visual Studio进行Mac预览(预览3)。Mono 4.8.0,Xamarin.IOS 10.4.0.73,如果这有助于缩小我的问题范围。页面是否正确加载到您的Web视图中?它在任何时候都会被呼叫吗?我注意到您删除了RegisterCallback中的事件处理程序。我的目的是在页面加载后(在后台)获取页面的HTML,因此我实际上没有向用户显示webview。如果有什么不同,您是否建议使用用户界面检查webview?
    public override bool FinishedLaunching(UIApplication application, NSDictionary launchOptions)
    {
    // Override point for customization after application launch.
    
    // If not required for your application you can safely delete this method
    
    SetIoc();
    Xamarin.Forms.Forms.Init();
    XLabs.Forms.XFormsAppiOS.Init();
    var webHybrid = new XLabs.Forms.Controls.HybridWebViewRenderer();
    
                    return true;
                }
    
                private void SetIoc()
                {
                    var resolverContainer = new SimpleContainer();
    
                    resolverContainer.Register<IDevice>(t => AppleDevice.CurrentDevice)
                                        .Register<IJsonSerializer, SystemJsonSerializer>()
                                        .Register<IDependencyContainer>(t => resolverContainer);
                    Resolver.SetResolver(resolverContainer.GetResolver());
                }
    
    public partial class MainViewController : UIViewController
    {
    HybridWebView webview;
    
            protected MainViewController(IntPtr handle) : base(handle)
            {
                // Note: this .ctor should not contain any initialization logic.
            }
    
            public override void ViewDidLoad()
            {
                base.ViewDidLoad();
                var webHybrid = new HybridWebViewRenderer();
                webview = new HybridWebView();
            }
    
            void Webview_LoadFinished(object sender, EventArgs e)
            {
                this.webview.RegisterCallback("dataCallback", s =>
                    {
                        System.Diagnostics.Debug.WriteLine(s);
                        this.webview.LoadFinished -= Webview_LoadFinished;
                        this.webview.RemoveCallback("dataCallback");
                    });
    
                this.webview.InjectJavaScript("Native(\"dataCallback\", document.getElementsByTagName('html')[0].innerHTML);");
            }
    
            private void GalleryButtonTouchUpAsync(object sender, EventArgs e)
            {
                webview.Uri = new Uri("http://google.co.in");
                webview.LoadFinished += Webview_LoadFinished;   
            }
        }