2011-05-21 15 views
7

Sí, sé que UIWebView tiene didFinishedLoad & delegado didStartLoad.iphone: ¿Cómo sé que UIWebView está completamente cargado?

Sin embargo, didFinishedLoad no significa la finalización completa. Se puede invocar cuando uno de los elementos que UIWebView termina de cargar. es decir, UIWebView puede llamar a este delegado varias veces mientras carga una sola página.

Así que de todos modos me puede decir cómo comprobar si el UIWebView es totalmente cargado?

Gracias

J

+0

¿Has hecho eso http://stackoverflow.com/questions/1842370/uiwebview-didfinishloading-fires-multiple-times first ?? – phi

Respuesta

6

http://www.codingventures.com/2008/12/using-uiwebview-to-render-svg-files/ en Javascript comunicarse de vuelta con el código de Objective-C

utilizan Tal ubicación del documento de hash.

y añadir en el cuerpo html vistas web:

<body onload="document.location.hash='myapp:myobject:myfunction';"> 

Sé que es un poco hacky, pero funciona. Y puede usarse en contenidos basados ​​en ajax, porque depende de usted cuando quiera llamar a su método listo. O puede usarse como un esquema de comunicación completo.

0

Lo que puede hacer es mostrar un indicador de red en la vista que está visible en la barra de estado. Cuando su página se está cargando, el indicador continuará girando hasta que la página esté completamente cargada. Cuando la página se carga por completo, el indicador dejará de girar y será invisible.
Sólo echar un vistazo a este ejemplo: Network indicator

+2

Sí, @Nitish, sabía que el indicador de red. pero mi pregunta es acerca de descubrir la finalización completa de una UIWebView a través de códigos, no de ojos. gracias –

+0

¿Es posible consultar su visibilidad? – Timo

11

tengo mala experiencia con DOM, pero después de buscar encontré que el document.readyState es la gran opción.

De w3schools:

definición y el uso La propiedad devuelve el readyState (carga) de estado del documento actual.

Esta propiedad devuelve uno de cuatro valores:

sin inicializar - no se empieza a cargar todavía

carga - se está cargando

interactiva - se ha cargado lo suficiente y el usuario puede interactuar con él

completo - Completamente cargado

Así que estoy usando esto para saber cuándo UIWebView ha cargado el documento:

- (void)readyState:(NSString *)str 
{ NSLog(@"str:%@",str); 

if ([str isEqualToString:@"complete"]||[str isEqualToString:@"interactive"]) { 
    NSLog(@"IT HAS BEEN DONE"); 
    [pageLoadingActivityIndicator stopAnimating]; 
} 

} 

- (void)webViewDidFinishLoad:(UIWebView *)webView 
{ 
//other code... 
[self readyState:[browserWebView stringByEvaluatingJavaScriptFromString:@"document.readyState"]]; 
} 
+1

Esto funciona! Voy a usar esto, gracias!:) –

+0

if ([str isEqualToString: @ "complete"] || [str isEqualToString: @ "interactive"]) es lo único que funcionó para mí. –

+1

Recibí un registro "HA SIDO HECHO" 27 veces desde una sola página web. Así que no puedo decir que está funcionando como esperaba –

Cuestiones relacionadas