12 Stimmen

webViewDidFinishLoad: Zu früh geschossen?

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?

3voto

Pieter Punkte 47

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];
}

3voto

Eric Shapiro Punkte 55

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.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X