Ignorar el error NSURLErrorDomain -999 no funciona en UIWebView

Estoy intentando evitar el problema generado mientras el delegado de UIWebView devuelve un error como ese. Tengo la solución común (lo vi en cualquier lugar de Internet) en mi implementación de delegado

 - (void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error { if ([error code] == NSURLErrorCancelled) return; } 

El problema que tengo es que esto no funciona siempre. A veces carga la web, otras veces carga partes de la web (el encabezado, una parte del text …) y varias veces no carga nada.

¿Hay alguna otra solución a esto? ¿Existe alguna implementación de código abierto de un browser que funcione correctamente?

De documentos de Apple:

NSURLErrorCancelled (-999)

"Devuelto cuando se cancela una carga asincrónica. Un delegado de marco de Web Kit recibirá este error cuando realice una operación de cancelación en un recurso de carga. Tenga en count que un NSURLConnection o delegado de NSURLDownload no recibirá este error si la descarga se cancela".

Entonces, el caso más probable para que esto suceda es que cargues una request y luego otra (o la misma), antes de que se complete la primera. Esto puede suceder Por ejemplo, si llama a loadRequest (o loadHTMLString ) en un método como viewDidAppear: se puede llamar varias veces. Esto también se informó que sucedería si golpea rápidamente 2 enlaces en UIWebView .

Por lo tanto, la sugerencia general es revisar cómo y dónde llamas loadRequest (o loadHTMLString ), y posiblemente proporcionar algún código.

Para solucionar este problema, sugiero agregar los siguientes rastros a su delegado de vista web:

 - (void)webViewDidStartLoad:(UIWebView *)webView { NSLog(@"Starting to download request: %@", [webView.request.URL absoluteString]); } - (void)webViewDidFinishLoad:(UIWebView *)webView { NSLog(@"Finished downloading request: %@", [webView.request.URL absoluteString]); } - (void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error { if ([error code] == NSURLErrorCancelled) NSLog(@"Canceled request: %@", [webView.request.URL absoluteString]); } 

Si inspeccionas el resultado, deberías ver más claramente lo que está sucediendo. Si pega la salida, podríamos tratar de ayudarlo más.

La mayoría de las veces cuando se trabaja con NSURLConnection o UIWebView, este error se debe a un time de espera. Puede que realmente no sea tu código, sino tu conectividad.