Ich versuche, zwischen dem Laden verschiedener Webseiten zu wechseln, indem ich die webView ausblende, während sie eine Seite lädt. Allerdings sehe ich, dass einige bildintensive Webseiten webViewDidFinishLoading zu früh auslösen, und wenn ich die webView an diesem Punkt zeige, bekommt man für einen Sekundenbruchteil eine Ansicht der vorherigen Seite. Haben Sie eine Idee, wie man dieses Problem beheben kann?
Antworten
Zu viele Anzeigen?Dieses Problem ist auch bei mir aufgetreten. Obwohl ich keine Lösung gefunden habe, habe ich das Problem umgangen, indem ich eine Verzögerung von 0,5 Sekunden eingeführt habe, bevor die UIWebView angezeigt wird, sobald die Delegatenmethode webViewDidFinishLoading aufgerufen wird.
- (void)webViewDidFinishLoad:(UIWebView *)webView
{
[self performSelector:@selector(displayWebView) withObject:nil afterDelay:0.5];
}
Wenn auf der Seite Javascript ausgeführt wird, müssen Sie möglicherweise warten, bis es beendet ist. Der einfachste Weg scheint zu sein, etwas Javascript zur Ausführung an die Seite zu senden:
-(void) webViewDidFinishLoad:(UIWebView *)webView
{
NSString *javaScript = @"<script type=\"text/javascript\">function myFunction(){return 1+1;}</script>";
[webView stringByEvaluatingJavaScriptFromString:javaScript];
// done here
}
Allerdings sehe ich immer noch Fälle, in denen die Webansicht nicht ganz innerhalb von webViewDidFinishLoad aktualisiert wird.