Как узнать, что страница не загрузилась в UIWebView, а не была «остановлена» пользователем?
-
12-09-2019 - |
Вопрос
В моем приложении есть UIWebView, который я использую для обеспечения функций просмотра веб-страниц.
У меня есть кнопка на панели инструментов, которая вызывает
-(void)stopLoading;
в UIWebView.Проблема в том, что когда этот метод отправляется в веб-представление, делегат получает
- (void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error;
сообщение.Ошибка, сопровождающая этот вызов: Операцию не удалось завершить.(Ошибка NSURLErrorDomain -999.)
Я также использую сообщение DidFailLoad, чтобы узнать, действительно ли страница не удалось загрузить, и в этом случае я показываю пользователю сообщение в формате html, чтобы сообщить ему об этой ошибке.
Итак, проблема в том, что если пользователь нажимает кнопку «Стоп», вместо того, чтобы просто показывать те части страницы, которые были загружены до остановки, отображается страница с ошибкой.
Я надеялся, что NSError.h содержит список кодов ошибок, с которыми я мог бы сравниться, но, похоже, мне придется создать свой собственный, основываясь на моих наблюдениях за кодами ошибок, которые появляются в моих журналах, а это меньше, чем идеально, так как они могут измениться в будущем...
Любые предложения были бы великолепны, спасибо.
Решение 2
Лучший способ решить эту проблему — создать перечисление, используя коды ошибок, предоставленные webView.
Не похоже, что они собираются меняться, но если и изменятся, ну хм.
Итак, теперь в моем методе с ошибкой загрузки я просто сравниваю код ошибки из объекта ошибки с моим перечислением и вижу, что произошло - выглядит примерно так:
typedef enum {
BrowserErrorHostNotFound = -1003,
BrowserErrorOperationNotCompleted = -999,
BrowserErrorNoInternetConnection = -1009
} BrowserErrorCode;
Другие советы
Эти коды ошибок определены в NSURLError.h в Foundation.framework.