2013-09-22 12 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では呼び出されず、トレースするとtheWebViewはnilではありません。私はwebViewDidStartLoadにブレークポイントを設定し、webViewDidStartLoadは呼び出されないので、uiwebviewはWebページをロードしません.... –

+0

OK theWebViewは、私が求めていたものではありません。 – bneely

答えて

6

私はpresentViewControllerの完了ハンドラにloadRequestメソッドを移動し、それは、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がnilでないかどうかを確認してください。 –

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

私はそれが働いていた、ViewWillAppear方法にviewDidLoad方法からloadRequestを動かしました。 iOS7の古いコードでUIWebViewが正しく初期化されていない可能性があります。

+1

私はまだviewDidLoadでloadRequestを呼びますが、問題はないようです。 – NLemay

+2

私のコードの問題は、まずpushViewcontrollerを呼び出してから、loadRequestを呼び出します。 ViewwillAppearまたはViewdidLoadでloadRequestを呼び出す必要があるようです。このようにして、UIWebviewが初期化され、loadRequestのイベントを受け取る準備ができていることを確認できます。これは私の推測です。 –

+2

Web View Controllerをアニメーションのナビゲーションコントローラにプッシュすると、viewDidAppearでloadRequestを実行する必要があることがわかりました。 – Willster

関連する問題