En mi aplicación, necesito una forma de saber cuándo se terminó de cargar mi vista web. Es muy fácil hacer eso si el contenido es html. Sin embargo, mi fuente de contenido es javascript con iFrame adentro, causará que el método UIWebView finishedLoad sea llamado varias veces. ¿Hay alguna manera en que pueda verificar si el iframe está terminado de cargarse?Cómo determinar si iFrame terminó de cargarse en UIWebView
Respuesta
El único método infalible que he encontrado es escuchar los tres métodos que dicen que está a punto de comenzar a cargarse, y que terminó de cargarse (más el equivalente de "error") y mantener manualmente un conteo para cada uno.
decir algo como:
int outstandingRequests;
- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType
{
outstandingRequests++;
}
- (void)webViewDidFinishLoad:(UIWebView *)webView
{
outstandingRequests--;
if(outstandingRequests < 1)
viewLoadingPleaseWait.hidden = TRUE;
}
- (void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error
{
outstandingRequests--;
}
He también por lo general tenía que OVERRID el método didFail - Apple utiliza incorrectamente este para informar de que, por ejemplo, el reproductor de YouTube se hizo cargo del manejo de un video de YouTube. NO es un error, es una "página cargada por una aplicación diferente".
p. Ej.
- (void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error
{
outstandingRequests--;
if([error code] == NSURLErrorCancelled)
{
NSLog(@"[%@] ...webView CANCELLED loading", [self class]);
}
else if([[error domain] isEqualToString:@"WebKitErrorDomain"]
&& [error code] == 204)
{
// no worries ... YouTube, iCal, or etc took over the page load
}
}
(Si es el mismo dominio) puede llamar a una función (en el elemento primario) desde el iframe.
top.iFrameLoaded();
saber si una vista web está cargando, puede utilizar webView.isLoading
para comprobar si todos los fotogramas de una vista web se realiza la carga. Sin contar la cantidad de iframes necesarios. Basta con comprobar si es cierto isLoading
dentro webViewDidFinishLoad:
- 1. ¿es posible usar iframe en UIWebView?
- 2. ¿Cómo detectar el cambio de página en UIWebView y hacer algo antes de que comience a cargarse?
- 3. Comprueba si UIWebView está cargado
- 4. ¿Cómo saber la diferencia entre cargar un iframe o cargar una página completa en un UIWebView?
- 5. Cómo detectar si de NSURLConnection sendSynchronousRequest: returningResponse: Error: terminó siendo tiempo de espera u otro error
- 6. ¿Cómo determinar si se está manejando una excepción .NET?
- 7. Cómo encontrar la animación se terminó de jugar en Android
- 8. cómo determinar si una imagen es explícita
- 9. Cómo determinar si KeyCode es carácter imprimible
- 10. ¿Cómo determinar si XML está bien formado?
- 11. ¿Cómo determinar si Type es una estructura?
- 12. ¿Cómo determinar si un campo tiene foco?
- 13. Cómo determinar si NSString está vacío
- 14. ¿Cómo puedo determinar si una URL redirige?
- 15. ¿Cómo determinar si una secuencia es bitónica?
- 16. ¿Cómo saber si un programa terminó su ejecución a través de una señal?
- 17. ¿Cómo pueden las directivas cargarse en perezoso en angularjs?
- 18. cómo se comprueba si UIWebView está vacío o no
- 19. Determinar cuándo ha finalizado stringByEvaluatingJavaScriptFromString
- 20. hg "corriente terminó inesperadamente" error en cloneing
- 21. Cómo cerrar iframe desde dentro de iframe?
- 22. ¿Cómo identificar qué archivo MP3 terminó en MediaPlayer.OnCompletionListener?
- 23. Ajuste iFrame CSS para mostrar: ninguno durante la carga
- 24. determinar si existe $ _SESSION superglobal en PHP
- 25. PHP: ¿cómo determinar si el navegador admite javascript en PHP?
- 26. Cómo determinar si una cadena es un número en C#
- 27. Cómo determinar si un marcador está visible en Google Maps
- 28. ¿Cómo puedo determinar si una URL redirecciona en PHP?
- 29. Cómo determinar si el valor es una fecha en PHP
- 30. Cómo determinar si un directorio está en la misma partición
+1, muy útil, gracias! Solo un aviso, terminé incrementando el contador de peticiones pendientes en el método '- (void) webViewDidStartLoad: (UIWebView *) aWebView' porque el' shouldStartLoadWithRequest' era menos confiable. – Stunner