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:
Est-ce que quelqu'un sait pourquoi UIWebView renvoie l'erreur?
Vous devriez vérifier le chemin de l'URL
Ce devrait être @ " http://google.com " Au lieu de @ "google.com"
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.
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];
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
Utilisez https://www.google.com ou http://www.google.com
en fait https: // est le mot clé.
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 :)
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.
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.