2009-09-14 16 views
12

Próbuję przejść między ładowaniem różnych stron internetowych, ukrywając podgląd strony podczas ładowania strony. Jednak widzę, że niektóre witryny intensywnie wyświetlające obraz powodują, że webViewDidFinishLoading wystrzeliwuje zbyt wcześnie i kiedy wyświetlam webView w tym momencie, przez ułamek sekundy dostajesz widok poprzedniej strony. Wszelkie pomysły, jak rozwiązać ten problem?webViewDidFinishLoad: Wypalanie zbyt szybko?

+1

Napotkano to również. JavaScript nie jest tak naprawdę gotowy, gdy zdarzenie już się zwolniło:/ – Danra

+0

Również borykałem się z tym problemem i podejrzewam, że chociaż cała zawartość mogła zostać załadowana, strona mogła jeszcze nie zostać renderowana. Więc widzisz starą stronę przez ułamek sekundy. W moim przypadku nie ma JavaScript, ale ton i ton CSS i dużego obciążenia HMTL. – brainjam

Odpowiedz

4

Jeśli na stronie jest JavaScript, może być konieczne poczekać na zakończenie. Najprostszym sposobem wydaje się wysłać jakiś skrypt na stronę do wykonania:

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

    // done here 
} 

Mimo, że wydaje mi się jeszcze zobaczyć przypadki, w których nie jest całkiem WebView aktualizowane w ciągu webViewDidFinishLoad.

3

Również napotkałem ten problem. Chociaż nie znalazłem rozwiązania, pracowałem nad problemem, wprowadzając 0,5-sekundowe opóźnienie przed wyświetleniem interfejsu UIWebView po wywołaniu metody delegowania webViewDidFinishLoading.

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

Może działać, ale niezbyt czysto ... – Julien

+0

Trudno polegać na taktowaniu tutaj – nielsbot

Powiązane problemy