2010-05-14 10 views
7

In meiner App muss ich feststellen, wann mein Webview fertig geladen ist. Es ist sehr einfach zu tun, wenn Inhalt HTML ist. Allerdings ist meine Inhaltsquelle Javascript mit iFrame innerhalb, es wird UIWebView finallyLoad Methode aufgerufen mehrere Male aufgerufen. Kann ich irgendwie überprüfen, ob der iframe fertig geladen ist?So bestimmen Sie, ob iFrame fertig geladen wurde in UIWebView

Antwort

7

Die einzige idiotensichere Methode, die ich gefunden habe, ist zu hören, die drei Methoden zu sagen, es wird geladen, und das Laden beendet (plus gleichwertig für "fehlgeschlagen"), und manuell eine Zählung für jeden.

das heißt so etwas wie:

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

habe ich auch in der Regel die didFail Methode overrid musste - Apple verwendet falsch dies, dass zu berichten, zum Beispiel Der YouTube-Player hat die Handhabung eines YouTube-Videos übernommen. Es ist kein Fehler, es ist eine "Seite wurde von einer anderen Anwendung geladen".

z.B.

+0

+1, sehr hilfreich Dank ist wahr! Nur ein Kopf hoch, endete ich oben inkrementieren der Zähler outstandingRequests in der '- (void) webViewDidStartLoad: (UIWebView *) aWebView' Methode, weil die 'shouldStartLoadWithRequest' war weniger zuverlässig. – Stunner

1

(Wenn es die gleiche Domäne ist), können Sie eine Funktion (im Elternteil) vom iframe aufrufen.

top.iFrameLoaded(); 
Verwandte Themen