Как узнать, когда страница не загрузилась в UIWebView, а не была остановлена ​​пользователем? - PullRequest
1 голос
/ 07 августа 2009

В моем приложении есть UIWebView, который я использую для обеспечения просмотра веб-страниц.

У меня есть кнопка на панели инструментов, которая вызывает

-(void)stopLoading;

в UIWebView. Проблема в том, что когда этот метод отправляется в веб-представление, делегат получает

- (void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error;

сообщение. Ошибка, сопровождающая этот вызов: Операция не может быть завершена. (NSURLErrorDomain ошибка -999.)

Я также использую сообщение didFailLoad, чтобы сказать, действительно ли страница не загрузилась - и в этом случае я отображаю сообщение в формате html для пользователя, чтобы сообщить ему об этой ошибке.

Таким образом, проблема в том, что если пользователь нажимает кнопку «Стоп», страница ошибки отображается вместо того, чтобы просто показывать какие-либо части страницы, загруженные до остановки.

Я надеялся, что NSError.h содержит перечисление кодов ошибок, с которыми я мог бы сравнить - но мне кажется, что мне придется создавать свои собственные, основываясь на моих наблюдениях за кодами ошибок, которые появляются в моих журналах - что менее чем идеал, так как они могут измениться в будущем ...

Любые предложения будут великолепны, спасибо.

Ответы [ 2 ]

2 голосов
/ 22 декабря 2009

Эти коды ошибок определены в NSURLError.h, в Foundation.framework

1 голос
/ 10 августа 2009

Лучший способ найти решение этой проблемы - создать перечисление с использованием кодов ошибок, указанных в WebView.

Не похоже, что они изменятся, но если они это сделают, хорошо - хммм.

Итак, теперь в моем методе сбоя загрузки я просто сравниваю код ошибки из объекта ошибки с моим enum, и я вижу, что произошло - выглядит примерно так:

typedef enum {  
    BrowserErrorHostNotFound = -1003,
    BrowserErrorOperationNotCompleted = -999,
    BrowserErrorNoInternetConnection = -1009
} BrowserErrorCode;
...