web-dev-qa-db-fra.com

UIWebView a terminé le chargement de l'événement

Est-il possible de démarrer un événement lorsqu'UIWebView (Iphone) a fini de charger l'URL.

Comment puis-je connaître l'URL actuelle de l'UIWebView?

39
Ploetzeneder

Oui, c'est possible. Utilisez le protocole UIWebViewDelegate et implémentez la méthode suivante dans votre délégué:

- (void)webViewDidFinishLoad:(UIWebView *)webView

Si vous voulez l'URL, vous pouvez obtenir la dernière requête en utilisant la propriété request:

webView.request.URL
76
Pascal

Aucune des solutions trouvées n'a fonctionné pour moi.

Ensuite, j'ai trouvé cet exemple qui fonctionne au moins beaucoup mieux que toute autre solution que j'ai trouvée sur Google/StackOverflow.

iwebview-chargement-achèvement-tracker

2
sabiland

La réponse de Pascal pour la partie "obtention de l'URL" est correcte.

Toutefois!

De la documentation d'UIWebViewDelegate, d'Apple: "webViewDidFinishLoad: envoyé après qu'une vue Web a fini de charger un cadre."

Frame! = Page.

webViewDidFinishLoad est appelé lorsque la page est "terminée de chargement". Il peut également être appelé plusieurs fois avant cette date. Les chargements de page à partir d'Amazon.com peuvent générer une douzaine d'appels à webViewDidFinishLoad.

Si vous contrôlez la source de la page, vous pouvez alors effectuer un test de charge et cela fonctionnera dans ce cas. Si vous ne vous souciez que d'être appelé "une fois le chargement de la page terminé", alors webViewDidFinishLoad est adéquat.

Pour les pages arbitraires, avec JavaScript arbitraire, le chargement à perpétuité des bannières publicitaires ou le défilement automatique des bannières, ou la mise en œuvre d'un jeu vidéo, l'idée même qu'une page soit "finie de se charger" est fausse.

1
Neal

Méthode très simple:

Étape 1: Définissez le délégué UIWebViewDelegate dans le fichier d'en-tête.

Étape 2: Ajouter la méthode webViewDidFinishLoad suivante pour obtenir l'URL actuelle de webview

- (void)webViewDidFinishLoad:(UIWebView *)webView
{
    NSLog(@"Current URL = %@",webView.request.URL);

    //-- Add further custom actions if needed 
}
1
Rajesh Loganathan