ShouldStartLoad пользовательского UIWebViewDelegate не вызывается, когда начинается загрузка запроса UIWebView - PullRequest
6 голосов
/ 23 марта 2011

Я определил класс UIWebViewDelegate и создал его экземпляр в свойстве Delegate моего UIWebView, но метод 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)
                        );
   }
}

В моем приложении appdelegate я делаю следующее в FinishedLaunching метод:

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

// Load webview
MyWebView.Instance.Load();

Обратите внимание, что я использовал copy / paste для предоставления этого примера кода, поэтому здесь могут быть незначительные ошибки копирования / вставки, но мой код компилируется, и веб-просмотр загружает запрос; просто ShouldStartLoad не вызывается.

Кто-нибудь знает, что я здесь не так делаю?

Ответы [ 2 ]

10 голосов
/ 26 марта 2011

Я решил эту проблему, используя свойство ShouldStartLoad веб-просмотра следующим образом:

myView.ShouldStartLoad = (webView, request, navType) => {
     // Determine here what to do
}

Я получил этот ответ от miguel.de.icaza's ответ на размещенный вопрос здесь .

0 голосов
/ 25 марта 2011

Не наследовать UIWebView. См. Справочник по классам UIWebView - Примечания по подклассам: http://developer.apple.com/library/ios/#documentation/uikit/reference/UIWebView_Class/Reference/Reference.html

...