2013-04-12 9 views
5

Ich habe eine UIWebView, die in Ordnung funktioniert. Der Delegierte arbeitet. Wenn ich eine URL öffne, werden die Ereignisse shouldStartLoadWithRequest und webViewDidFinishLoad ausgelöst. Wenn ich beispielsweise auf ein Google-Suchergebnis klicke, wird nur shouldStartLoadWithRequest gefeuert, und webViewDidFinishLoad wird nie aufgerufen.ios - UIWebView DidFinishLoad wird nicht aufgerufen

Das verursacht Probleme, weil wenn ich eine "loading ..." Anzeige auf shouldStartLoadWithRequest setze, in diesen Fällen bleibt der Indikator noch, nachdem die Seite korrekt geladen wurde.

Eine Idee, warum das passiert?

+1

Delegate zu Ihrem Webview setzen –

+2

Post einige Code. –

Antwort

0

kein Experte für Google API, aber wie ich dies im Verdacht könnte Ihr reason sein.

1

in .h-Datei <UIWebViewDelegate>

und in .m hinzufügen:

yourWebview=[[UIWebView alloc]init]; 
yourWebview.delegate=self; 
+1

Er gibt an, dass der Delegierte bereits festgelegt ist und arbeitet. –

+0

@Thedude: Das weiß ich. Aber er hat keinen Code geschrieben. So kann ich nur die Möglichkeiten erraten. Und oben scheint die beste Möglichkeit zu sein. –

1

Wenn Sie auf Suche klicken, wird der navigationType UIWebViewNavigationTypeFormSubmitted ist. In diesem Fall sollte der Rückgabetyp JA lauten. Ist dies nicht der Fall, wird die webViewDidFinishLoad-Methode nicht ausgelöst.

- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType 
{ 
    NSLog(@"shouldStartLoadWithRequest"); 

    if (navigationType == UIWebViewNavigationTypeLinkClicked){ 
     NSLog(@"UIWebViewNavigationTypeLinkClicked"); 

     return YES; 
    } 
    if (navigationType ==UIWebViewNavigationTypeFormSubmitted) { 
     NSLog(@"UIWebViewNavigationTypeFormSubmitted"); 
     return YES; 
    } 
    if (navigationType ==UIWebViewNavigationTypeBackForward) { 
     NSLog(@"UIWebViewNavigationTypeBackForward"); 
     return YES; 
    } 
    if (navigationType ==UIWebViewNavigationTypeFormResubmitted) { 
     NSLog(@"UIWebViewNavigationTypeFormResubmitted"); 
     return YES; 
    } 
    if (navigationType ==UIWebViewNavigationTypeReload) { 
     NSLog(@"UIWebViewNavigationTypeReload"); 
     return YES; 
    } 



    return YES; 
} 
1

Dieses Problem wird normalerweise auf iPad-Anwendungen gefunden .... aber Sie können Ihr Problem lösen, indem Sie [self performselector: afterdelay] verwenden, müssen Sie Selektor-Methode einchecken, ob webview geladen hat oder nicht [m_pWebview geladen]; und entsprechend führen Sie Indikator stoppen .... es ist nicht die richtige Lösung, aber es funktioniert .......