3 votes

Est-ce que didFailLoadWithError est normalement appelé après que je retourne NON dans la fonction déléguée shouldStartLoadWithRequest?

Je constate ce comportement qui n'est pas documenté dans UIWebViewDelegate d'Apple :

Si je retourne NON à la fonction de délégué

- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType {

Cette fonction est immédiatement appelée avec l'erreur 101 (Cette URL ne peut pas être chargée.).

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

Étant donné que j'ai explicitement annulé la requête, est-il normal que didFailLoadWithError soit invoqué ?

2voto

futureelite7 Points 6247

Mise à jour : UIWebView NE appellera PAS didFailLoadWithError si vous annulez manuellement la connexion.

Je l'ai vérifié avec des tests. La raison pour laquelle didFailLoadWithError est pour quelque chose de totalement non lié à UIWebView.

0voto

Praveen-K Points 3135

Vous devez toujours renvoyer non shouldStartLoadWithRequest, renvoyer OUI si le web view doit commencer à charger du contenu; sinon, NON

Si votre connexion a une erreur 101 (net::ERR_CONNECTION_RESET): Erreur inconnue, alors vous êtes peut-être confronté à ces problèmes:

Vous essayez de vous connecter à Internet mais les pages ne se chargent pas.
Vous essayez de rafraîchir/charger la page plusieurs fois mais en vain.
Vous voyez beaucoup de choses étranges sur la page. (liens et images sont désalignés.)
Quand la page ne se charge pas, vous voyez la phrase "Erreur 101 (net::ERR_CONNECTION_RESET): Erreur inconnue".

Vous devez toujours gérer la requête dans votre délégué et renvoyer NON. Ensuite, dans la réponse reçue de NSURLConnection, annuler la connexion et si tout va bien (vérifier la réponse), charger à nouveau la requête d'URL dans le webview. Assurez-vous de renvoyer OUI dans l'appel ci-dessus lors du chargement de la requête d'URL à nouveau. ou vous pouvez le gérer avec l'utilisation des méthodes synchrones ou asynchrones.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X