2013-09-22 58 views
11

我的應用程序使用UIWebview,它在iOS 5和iOS 6中運行良好。但是,當我構建Xcode 5並運行相同的代碼時,它不會加載iOS 7中的網頁。iOS 7 UIWebView不加載網頁

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

不調用所有委託函數。但我確實在xib文件中設置了委託代碼

self.theWebView.delegate = self; 

我沒有通過谷歌找到任何信息。感謝您的幫助。

+0

是否已確認正在裝載theWebView?它在屏幕上和調試器中是否可見? – bneely

+0

我不知道你的意思是什麼意思加載了WebView。所有委託函數都不在iOS7中調用,我跟蹤它,WebView不是零。我在webViewDidStartLoad中設置了斷點,並且沒有調用webViewDidStartLoad,所以看起來uiwebview不會加載網頁.... –

+0

確定WebView不是零,這正是我所要求的。 – bneely

回答

6

我感動的方法的loadRequest的presentViewController的完成處理程序,它工作在iOS 5中,6和7:

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

同樣,我需要將調用loadRequest:移入viewDidAppear。 – Willster

+0

這並沒有幫助我,但原因是我在IB的web視圖自動合成到_webV而不是webV。只需檢查您的loadrequest中的webview是否不爲零。 –

4

我找到了根本原因。 也許我錯誤地使用了UIWebView,但它適用於iOS5和iOS6。 我不知道它爲什麼可以在早期的iOS版本中運行...

此外,它使用SDK 6.1構建代碼時適用於iOS7。

這是我的舊代碼。

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

我從viewDidLoad方法將ViewWillAppear方法移動loadRequest,那麼它的工作。 我想也許UIWebView未在我的舊iOS7代碼中正確初始化。

+1

我仍然在viewDidLoad中調用loadRequest,它似乎沒有問題。 – NLemay

+2

我的代碼的問題是我先調用pushViewcontroller,然後我調用loadRequest。看來我們需要在ViewwillAppear或ViewdidLoad中調用loadRequest。通過這種方式,我們可以確保UIWebview已初始化並準備好接收loadRequest事件。這只是我的猜測。 –

+2

如果使用動畫將Web視圖控制器推到導航控制器上,那麼我發現loadRequest需要在viewDidAppear中完成。 – Willster