2013-09-22 18 views
11

Moja aplikacja korzysta z interfejsu UIWebview i działa dobrze w iOS 5 i iOS 6. Jednak nie ładuje strony w iOS 7, gdy buduję w Xcode 5 i uruchamiam ten sam kod .iOS 7 UIWebView nie ładuje strony internetowej

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

Wszystkie funkcje pełnomocnika nie są wywoływane. Ale ustawiam delegata w pliku xib i kod

self.theWebView.delegate = self; 

Nie znalazłem żadnej informacji przez google. Dziękuję za pomoc.

+0

Czy sprawdzono, że theWebView jest ładowany? Czy jest widoczny na ekranie i w debugerze? – bneely

+0

Nie wiem, co masz na myśli, że WebView jest ładowany. Wszystkie funkcje delegatów nie są wywoływane w systemie iOS7, śledzę to, a widok WWW nie jest zerowy. Ustawiłem punkt przerwania w webViewDidStartLoad, a webViewDidStartLoad nie jest wywoływany, więc wygląda na to, że uiwebview nie ładuje strony internetowej ... –

+0

OK theWebView nie jest zerowy, o to właśnie pytałem. – bneely

Odpowiedz

6

Przeniosłem metodę loadRequest do obsługi zakończeniu presentViewController i działa w iOS 5, 6 i 7:

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

Podobnie, musiałem przenieść wywołanie loadRequest: do viewDidAppear. – Willster

+0

To mi nie pomogło, ale przyczyną było to, że mój widok sieciowy w IB został autosyntetyzowany do _webV zamiast webV. Po prostu sprawdź, czy widok internetowy w żądaniu ładowania nie jest zerowy. –

4

Znalazłem główną przyczynę. może I niepoprawnie używane UIWebView, ale działa w iOS5 i iOS6. Nie wiem, dlaczego działa we wcześniejszych wersjach iOS ...

Co więcej, działa w iOS7, kiedy buduję kod z SDK 6.1.

Oto mój stary kod.

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

przemieściłem loadRequest ze sposobu do sposobu ViewWillAppearviewDidLoad, to działało. Myślę, że być może UIWebView nie jest poprawnie zainicjalizowany w moim starym kodzie dla iOS7.

+1

Nadal wywołuję loadRequest w viewDidLoad i nie wydaje się być problem. – NLemay

+2

Problemem mojego kodu jest wywołanie najpierw pushViewcontroller, a następnie wywołanie metody loadRequest. Wygląda na to, że musimy wywołać metodę loadRequest w ViewwillAppear lub ViewdidLoad. W ten sposób możemy upewnić się, że UIWebview jest uśpiony i gotowy do odbierania zdarzeń z loadRequest. To tylko moje przypuszczenie. –

+2

Jeśli przesuwasz kontroler widoku WWW na kontroler nawigacyjny z animacją, to stwierdzam, że loadRequest musi być zrobione w viewDidAppear. – Willster

Powiązane problemy