2013-09-22 19 views
11

La mia app utilizza UIWebview, e funziona bene su iOS 5 e iOS 6. Tuttavia, non carica la pagina Web in iOS 7 quando costruisco Xcode 5 ed eseguo lo stesso codice .iOS 7 UIWebView non carica la pagina web

- (void)webViewDidFinishLoad:(UIWebView *)webView {} 
- (void)webViewDidStartLoad:(UIWebView *)webView {} 
- (void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error {} 

Non viene chiamata la funzione di tutti i delegati. Ma imposto il delegato nel file xib e nel codice

self.theWebView.delegate = self; 

Non ho trovato alcuna informazione tramite google. Grazie per l'aiuto.

+0

Si è verificato che theWebView viene caricata? È visibile sullo schermo e nel debugger? – bneely

+0

Non so cosa intendi per il caricamento di WebView. Tutte le funzioni delegate non vengono chiamate in iOS7, lo rintraccia, theWebView non è nullo. Ho impostato il punto di interruzione in webViewDidStartLoad e webViewDidStartLoad non viene chiamato, quindi sembra che uiwebview non carichi la pagina Web ... –

+0

OK theWebView non è nullo, è quello che stavo chiedendo. – bneely

risposta

6

ho spostato il metodo loadRequest al gestore di completamento di un presentViewController e funziona in iOS 5, 6 e 7:

[self presentViewController:gwvc animated:YES completion:^(void){ 
    [gwvc.wv loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@"http://www.walkjogrun.net/about/eukanuba.html"]]]; 
}]; 
+0

Analogamente, avevo bisogno di spostare la chiamata su loadRequest: in viewDidAppear. – Willster

+0

Questo non mi ha aiutato, ma la causa è stata che la mia vista web in IB è stata auto-sintetizzata per _webV invece di webV. Controlla se la vista sul web della tua squadra non è nulla. –

4

Ho trovato la causa principale. forse ho usato in modo errato UIWebView, ma funziona in iOS5 e iOS6. Non so perché funziona nelle versioni precedenti di iOS ...

Inoltre, funziona in iOS7 quando costruire codice con SDK 6.1.

Ecco il mio vecchio codice.

 RechargeWebPageViewController *webPageViewController; 
    webPageViewController = [[ RechargeWebPageViewController alloc] initWithNibName:@"WebPage" bundle:nil]; 
    if (webPageViewController != nil) { 
     webPageViewController.hidesBottomBarWhenPushed = YES; 
     webPageViewController.delegate=self; 
     [self.navigationController pushViewController:webPageViewController animated:YES]; 
     NSURL *url = [NSURL URLWithString:@"https://xxx.php"]; 

     NSMutableURLRequest *request = [[NSMutableURLRequest alloc]initWithURL: url]; 
     [webPageViewController loadRequest:request]; 
     [request release]; 
    } 

ho spostato il loadRequest dal metodo viewDidLoad al metodo ViewWillAppear, quindi ha funzionato. Penso che forse UIWebView non sia stato inizializzato correttamente nel mio vecchio codice per iOS7.

+1

Ho ancora chiamato loadRequest in viewDidLoad e non sembra essere un problema. – NLemay

+2

Il problema del mio codice è chiamare prima pushViewcontroller, poi chiamo loadRequest. Sembra che dobbiamo chiamare loadRequest in ViewwillAppear o ViewdidLoad. In questo modo, possiamo assicurarci che UIWebview sia inizializzato e pronto a ricevere eventi di loadRequest. Questa è solo la mia ipotesi. –

+2

Se si sposta il controller di visualizzazione Web su un controller di navigazione con animazione, ho scoperto che loadRequest deve essere eseguito in viewDidAppear. – Willster

Problemi correlati