2013-09-22 2 views
11

Mon application utilise UIWebview, et fonctionne bien dans iOS 5 et iOS 6. Cependant, elle ne charge pas la page Web dans iOS 7 lorsque je compile dans Xcode 5 et exécute le même code .iOS 7 UIWebView ne charge pas la page Web

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

La fonction déléguée n'est pas appelée. Mais je place le délégué dans le fichier xib et le code

self.theWebView.delegate = self; 

Je n'ai trouvé aucune information via google. Merci de votre aide.

+0

ayant vérifié que theWebView est chargé? Est-il visible sur l'écran et dans le débogueur? – bneely

+0

Je ne sais pas ce que vous voulez dire que le WebView est en cours de chargement. Toutes les fonctions de délégué ne sont pas appelées dans iOS7, je le trace, theWebView n'est pas nul. J'ai mis le point de rupture dans webViewDidStartLoad, et webViewDidStartLoad n'est pas appelé, il semble donc que uiwebview ne charge pas la page web ... –

+0

OK, theWebView n'est pas nul, c'est ce que je demandais. – bneely

Répondre

6

I déplacé loadRequest la méthode au manipulateur d'achèvement d'une presentViewController et il fonctionne dans iOS 5, 6 et 7:

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

De même, je devais déplacer l'appel à loadRequest: dans viewDidAppear. – Willster

+0

Cela ne m'a pas aidé, mais la raison en était que mon affichage Web dans IB a été auto-synthétisé à _webV au lieu de webV. Vérifiez simplement si le webview dans votre demande de chargement n'est pas nul. –

4

J'ai trouvé la cause. peut-être que j'ai utilisé incorrectement UIWebView, mais il fonctionne dans iOS5 et iOS6. Je ne sais pas pourquoi cela fonctionne dans les versions antérieures d'iOS ...

En outre, il fonctionne dans iOS7 lorsque je construis du code avec SDK 6.1.

Voici mon ancien code.

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

je me suis déplacé le loadRequest de la méthode viewDidLoad la méthode ViewWillAppear, il a travaillé. Je pense que peut-être UIWebView n'est pas initialisé correctement dans mon ancien code pour iOS7.

+1

J'appelle toujours loadRequest dans viewDidLoad et cela ne semble pas poser de problème. – NLemay

+2

Le problème de mon code est que j'appelle d'abord pushViewcontroller, puis j'appelle loadRequest. Il semble que nous devions appeler loadRequest dans ViewwillAppear ou ViewdidLoad. De cette façon, nous pouvons nous assurer que UIWebview est initilized et prêt à recevoir des événements de loadRequest. C'est juste ma conjecture. –

+2

En poussant le contrôleur de vue Web sur un contrôleur de navigation avec animation, j'ai trouvé que loadRequest devait être fait dans viewDidAppear. – Willster