2009-09-14 18 views
12

Sto provando a passare dal caricamento di pagine Web diverse nascondendo la visualizzazione Web mentre sta caricando una pagina. Tuttavia, sto vedendo che alcuni siti web ad alta intensità di immagini stanno facendo sì che webViewDidFinishLoading si attivi troppo presto e quando mostro la webView a quel punto, per una frazione di secondo si ottiene una visualizzazione della pagina precedente. Qualche idea su come risolvere questo?webViewDidFinishLoad: licenziare troppo presto?

+1

Incontrato anche questo. Javascript non è realmente pronto quando l'evento è già stato attivato:/ – Danra

+0

Ho anche avuto difficoltà con questo, e sospetto che sebbene tutto il contenuto possa essere stato caricato, la pagina potrebbe non aver ancora eseguito il rendering. Quindi vedi la vecchia pagina per una frazione di secondo. Nel mio caso, niente Javascript ma tonnellate e tonnellate di CSS e un grande carico di HMTL. – brainjam

risposta

4

Se c'è JavaScript nella pagina, potrebbe essere necessario attendere che finisca. Il modo più semplice sembra essere quella di mandare qualche javascript per pagina da eseguire:

-(void) webViewDidFinishLoad:(UIWebView *)webView 
{ 
    NSString *javaScript = @"<script type=\"text/javascript\">function myFunction(){return 1+1;}</script>"; 
    [webView stringByEvaluatingJavaScriptFromString:javaScript]; 

    // done here 
} 

Detto questo, mi sembra di vedere ancora casi in cui il WebView non è abbastanza aggiornato entro webViewDidFinishLoad.

3

Ho riscontrato anche questo problema. Sebbene non abbia trovato una soluzione, ho risolto il problema introducendo un ritardo di 0,5 secondi prima di mostrare UIWebView dopo aver chiamato il metodo delegate webViewDidFinishLoading.

- (void)webViewDidFinishLoad:(UIWebView *)webView 
{ 
    [self performSelector:@selector(displayWebView) withObject:nil afterDelay:0.5]; 
} 
+5

Può funzionare, ma non è molto pulito ... – Julien

+0

È male contare sui tempi qui – nielsbot

Problemi correlati