2010-11-24 21 views
5

Estoy probando una UIWebview con varios tipos de documentos diferentes - .xlsx, .jpg, etc. - y abre la mayoría de ellos muy bien. De vez en cuando, abro un archivo local y aparece este mensaje correcto en la vista web:Detecta y personaliza el error "No se puede leer el documento" de UIWebView

Unable to Read Document 
An error occurred while reading the document 

No estoy preocupado con el "por qué" se produce este error - sucede, por ejemplo, cuando me alimento del UIWebView un archivo de basura (intencionalmente). El problema es que no puedo descubrir cómo detectar "cuándo" sucede esto. No se dispara web View: didFailLoadWithError, que no dispara una NSException (a través de @try & @catch), y cuando examino el documento en webViewDidFinishLoad, webView.request.HTTPBody es nulo.

¿Alguien sabe cómo detectar cuándo UIWebView no puede mostrar contenido?

+0

Es una vieja pregunta, pero en mi caso 'webView: didFailLoadWithError' funcionó para mí en iOS 7/8. El uso de 'stringByEvaluatingJavaScriptFromString' a veces me entregaba datos, pero no era el que estaba buscando (¿un viejo archivo de basura?). – testing

Respuesta

3
just call uiwebview delegate method 

- (void)webViewDidStartLoad:(UIWebView *)webView 
{ 

} 
- (void)webViewDidFinishLoad:(UIWebView *)webView 
{ 
    NSString *html = [webView stringByEvaluatingJavaScriptFromString: 
         @"document.body.innerHTML"]; 
    if ([html rangeOfString:@"Unable to Read Document."].location == NSNotFound) { 

     NSLog(@"NO Error"); 

    } 
    else 
    { 
//  NSLog(@"File contains Error"); 
    } 

} 
0

Si la inspección del registro no muestra nada fuera de lo normal, ejecútelo en el dispositivo real. Como un poco de ayuda, mi registro dice

Cannot find data converter callback for uti public.data 
Failed to generate preview 

lo que significa que el simulador está fallando. Después de frustrarme con este mismo problema, pasé por todo el proceso final de certificación e instalación y aprovisionamiento, y también confirmo que Word 97 y los archivos Pages/Pages.zip que contienen texto realmente se muestran bien en el dispositivo real. SOLUCIONADO El simulador en sí está roto, lo que es muy ... preocupante, que esta pequeña nota no parece estar en las notas de la versión, y también complica el desarrollo un poco. Sin embargo, la solución alternativa es seleccionar el dispositivo en Xcode y desplegarlo, y debería funcionar.

+1

Gracias por la respuesta, pero ese no es el problema. No tengo problemas para leer archivos de Word. Más bien, tengo problemas para detectar cuándo UIWebView no puede leer ningún archivo en particular. No tiene nada que ver con las discrepancias Simulador/Dispositivo. – cetcet

+0

por lo general comprueban si hay un retorno nulo o un retorno de longitud cero. Estaba usando la codificación incorrecta para un archivo (lo guardé como Roman 8 y no como UTF) y la rutina no estaba fallando, pero la cadena tenía 0 de longitud. Me tomó 2 días resolverlo. – PapaSmurf

+0

@PapaSmurf: ¿Quién debería devolver algo? – testing

Cuestiones relacionadas