Обычно ли didFailLoadWithError вызывается после того, как я возвращаю NO в делегатской функции shouldStartLoadWithRequest? - PullRequest
3 голосов
/ 12 августа 2011

Я вижу, что это поведение не задокументировано в UIWebViewDelegate от Apple:

Если я верну NO в функцию делегата

- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType {

Эта функция сразу вызывается с ошибкой 101 (Этот URL не может быть загружен.).

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

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

Ответы [ 2 ]

2 голосов
/ 15 августа 2011

Обновление: UIWebView НЕ будет вызывать didFailLoadWithError, если вы вручную отмените соединение.

Я проверял это при тестировании.Причина, почему didFailLoadWithError заключается в чем-то совершенно не связанном с UIWebView.

0 голосов
/ 12 августа 2011

Вы всегда должны возвращать no shouldStartLoadWithRequest, возвращать YES, если веб-представление должно начать загрузку содержимого; в противном случае NO

Если в вашем соединении есть Ошибка 101 (net :: ERR_CONNECTION_RESET): неизвестная ошибка, возможно, у вас возникли следующие проблемы:

You are trying to connect to the internet but the pages won’t load.
You are trying to refresh/reload the page so many times but to no avail.
You can see a lot of weird stuff all over the page. (links and images are unaligned.)
When the page doesn’t load, you can see the phrase “Error 101 (net::ERR_CONNECTION_RESET): Unknown error”.

Вы должны всегда обрабатывать запрос к вашему делегату и возвращать NO. Затем в полученном ответном вызове от NSURLConnection отмените соединение и, если все в порядке (проверьте ответ), снова загрузите URL-запрос в веб-представлении. Обязательно верните YES в приведенном выше вызове при повторной загрузке urlrequest. или вы можете справиться с этим с помощью Синхронного или Асинхронного методов.

...