当UIWebView请求开始加载时,不会调用自定义UIWebViewDelegate的StartStartLoad

Bru*_*ill 6 xamarin.ios xamarin

我已经定义了一个UIWebViewDelegate类并在我的UIWebView的Delegate属性中实例化了它,但是当webview加载请求时,没有调用ShouldStartLoad方法.我究竟做错了什么?

这是定义我的UIWebViewDelegate和我的UIWebView的代码:

public class MyWebViewDelegate: UIWebViewDelegate
{
    private UIWebView _view;
    public MyWebViewDelegate (UIWebView view)
    {
         _view = view;
    }   
    public override bool ShouldStartLoad (UIWebView webView, 
                                          MonoTouch.Foundation.NSUrlRequest request,
                                          UIWebViewNavigationType navigationType)
    {
        System.Console.WriteLine("Starting load");
        return true;
    }
}

public class MyWebView : UIWebView
{
   private static MyWebView _instance = new MyWebView ();
   private MyWebView () : base()
   {
       this.Delegate = new MyWebViewDelegate(this);
   }
   public static MyWebView Instance {
       get { return _instance; }
   }
   public void Load ()
   {
       this.LoadRequest (new NSUrlRequest(NSUrl.FromString("http://myurl"),
                           NSUrlRequestCachePolicy.ReloadIgnoringLocalAndRemoteCacheData,
                           5)
                        );
   }
}
Run Code Online (Sandbox Code Playgroud)

在我的appdelegate中,我在FinishedLaunching方法中执行以下操作:

// Create form view controller
viewControllerForm = new UIViewController();
viewControllerForm.View = MyWebView.Instance;
viewControllerForm.Title = Localization.Translate("Forms");

// Load webview
MyWebView.Instance.Load();
Run Code Online (Sandbox Code Playgroud)

请注意,我使用了复制/粘贴来提供此代码示例,因此这里可能存在一些轻微的复制/粘贴错误,但我的代码正在编译,webview会加载请求; 它只是没有被调用的ShouldStartLoad.

有谁知道我在这里做错了什么?

Bru*_*ill 10

我通过使用webview 的ShouldStartLoad属性解决了这个问题,如下所示:

myView.ShouldStartLoad = (webView, request, navType) => {
     // Determine here what to do
}
Run Code Online (Sandbox Code Playgroud)

我从miguel.de.icaza回答这里发布的问题得到了这个答案.