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?
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
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.
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.
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
}