2013-04-12 15 views
5

Ho un UIWebView che funziona bene. Il delegato sta lavorando. Quando apro un URL, vengono attivati ​​gli eventi shouldStartLoadWithRequest e webViewDidFinishLoad.ios - UIWebView DidFinishLoad non viene chiamato

Ma quando per esempio faccio clic su un risultato di ricerca di Google, viene emesso solo shouldStartLoadWithRequest e non viene mai chiamato webViewDidFinishLoad.

Questo sta causando problemi perché se inserisco un indicatore "loading ..." su shouldStartLoadWithRequest, in questi casi l'indicatore rimane ancora anche dopo che la pagina è stata caricata correttamente.

Qualche idea sul perché questo sta accadendo?

+1

imposta delegato per la tua webview –

+2

Invia un po 'di codice. –

risposta

0

Non è un esperto di Google API, ma come sospettavo che questo potrebbe essere il vostro reason.

1

nel file h aggiungere <UIWebViewDelegate>

e in .m:

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

Dichiara che il delegato è già impostato e funzionante. –

+0

@Thedude: lo so. Ma lui non ha pubblicato alcun codice. Quindi posso solo intuire le possibilità. E sopra sembra essere la migliore possibilità. –

1

Quando si fa clic sulla ricerca, il navigationType è UIWebViewNavigationTypeFormSubmitted. Quindi in questo caso, il tipo restituito dovrebbe essere SÌ. In caso contrario, il metodo webViewDidFinishLoad non viene attivato.

- (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

Questo problema si trova in genere nelle applicazioni ipad .... ma è possibile risolvere il problema utilizzando [self performselector: afterdelay], è necessario selezionare il metodo selector se webview ha caricato o meno [m_pWebview caricato]; e secondo che l'indicatore di performance si ferma .... non è la soluzione corretta ma funziona .......

Problemi correlati