web-dev-qa-db-fra.com

Comment résoudre l'erreur "Frame Load Interrupted" dans UIWebView?

Dans une application que je suis chargé de créer, je tire une liste de vidéos YouTube et les laisse apparaître dans l'application. Cependant, lorsqu'un utilisateur appuie sur une cellule dans le contrôleur de navigation de la vue YouTube et que la vue modale avec UIWebView apparaît, UIWebView renvoie l'erreur "Chargement de la trame interrompu".

Je l'ai parcouru des dizaines de fois dans le débogueur, et tout semble aller pour le mieux jusqu'à ce que j'initialise NSURLRequest. Lorsque la vue modale est affichée, voici le code qui s'exécute dans la méthode -viewDidLoad de ViewController:

- (void)viewDidLoad
{
    [super viewDidLoad];
    _webView = [[UIWebView alloc] init];
    _webView.delegate = self;
    NSURLRequest *request = [[NSURLRequest alloc] initWithURL:_url];
    [_webView loadRequest:request];
}

Cependant, lorsque je lance le débogueur sur la ligne [_webView loadRequest:request];, je vois ce qui suit:

enter image description here

Est-ce que quelqu'un sait pourquoi UIWebView renvoie l'erreur?

15
amarkon

Vous devriez vérifier le chemin de l'URL 
Ce devrait être @ " http://google.com " Au lieu de @ "google.com"

6
Hai Hw

J'ai le même problème, dans mon cas, il s'avère que la MIMEType n'est pas définie correctement. 

J'ai testé en créant manuellement une NSURLConnection avec la requête de l'URL, puis j'ai implémenté:

-(void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response

observer le rappel de réponse depuis la connexion. La réponse MIMEType s'est avérée être "pdf/pdf" au lieu de "application/pdf," et dès que je corrige ce problème, la vue Web a bien chargé l'URL. 

J'espère que cela t'aides.

3
user3225101

L'URL que vous utilisez ne reconnaît probablement pas l'agent utilisateur. C’était un problème qui se produisait également dans les anciennes versions d’iOS, mais qui semble être revenu dans iOS 7. Essayez d’ajouter cela à votre appdelegate didFinishLaunchingWithOptions:

NSDictionary *dictionary = [[NSDictionary alloc] initWithObjectsAndKeys:@"Mozilla/5.0 (iPhone; CPU iPhone OS 5_0 like Mac OS X) AppleWebKit/534.46 (KHTML, like Gecko) Version/5.1 Mobile/9A334 Safari/7534.48.3", @"UserAgent", nil];
[[NSUserDefaults standardUserDefaults] registerDefaults:dictionary];
1
Nikos M.

J'ai rencontré le même problème sur iOS 10.2.1 UIWebView.

quand demande un fichier pdf avec chemin URL

le fichier pdf a le type MIMEType "application/x-pdf".

alors j'ai changé en "application/pdf" et je peux le lire

1
Kernelzero

Utilisez https://www.google.com ou http://www.google.com

en fait https: // est le mot clé.

1
Premal Khetani

L'avez-vous fait sur le simulateur ou sur un appareil réel? J'ai eu le même problème sur la sim mais cela a fonctionné sur un appareil :)

0
Jonathan Brown

J'ai eu un problème similaire à ceux qui ont déclaré que l'ajout ou la correction du type mime avait résolu le problème. Dans mon cas, j’essayais d’ouvrir un fichier local sans extension (par exemple, "mon-répertoire/mon-fichier"), ce qui a entraîné l’erreur redoutée "Frame Load Interrupted" (avec "Unbalanced calls to begin/end appearance transitions for UIViewController"). L'ajout de l'extension de fichier (par exemple, "mon-répertoire/mon-fichier.pdf") a corrigé le problème pour moi.

0
sherb

La raison pour laquelle le chargement de frame interrompu erreur est affiché est que www.youtube.com effectue une redirection vers m.youtube.com, ce que UIWebView n'aime pas. Pour spéculer sauvagement, je citerais les implications possibles pour la sécurité? J'ai pu résoudre ce problème en établissant un lien direct avec le site mobile, supprimant le besoin de redirection par youtube.

0
dave