UIWebView a terminé le chargement de l'événement
Question
Est-il possible de commencer un événement quand un UIWebView (Iphone) a fini de charger l'URL.
Comment puis-je savoir, l'URL actuelle du UIWebView?
La solution
Oui, cela est possible. Utilisez le protocole UIWebViewDelegate
et mettre en œuvre la méthode suivante dans votre délégué:
- (void)webViewDidFinishLoad:(UIWebView *)webView
Si vous voulez que l'URL, vous pouvez obtenir la dernière demande à l'aide du request
de propriété:
webView.request.URL
Autres conseils
Aucune des solutions trouvées a fonctionné pour moi.
Je trouve cet exemple qui au moins fonctionne beaucoup mieux que toute autre solution que je trouve sur Google / StackOverflow.
Très simple méthode:
Étape 1:. Définir UIWebViewDelegate
délégué dans le fichier d'en-tête
Étape 2: Ajouter une méthode de 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
}
La réponse de Pascal pour la partie « obtenir l'URL » est très bien.
Cependant!
De la documentation UIWebViewDelegate, d'Apple: « WebViewDidFinishLoad: Envoyé après une vue web fin du chargement d'un cadre. »
Cadre! = Page.
webViewDidFinishLoad est appelée lorsque la page est « chargement effectué ». Il peut également être appelé plusieurs fois avant. charges Page de Amazon.com peuvent générer une douzaine d'appels à webViewDidFinishLoad.
Si vous contrôlez la source de la page, alors vous pouvez faire un test de charge pour elle, et cela fonctionnera, pour ce cas. Si vous ne vous préoccupez obtenir appelé « après la page chargement effectué », puis webViewDidFinishLoad est suffisante.
Pour les pages arbitraires, avec JavaScript arbitraire, le chargement des bannières publicitaires à perpétuité, ou bannières défilement automatique, ou la mise en œuvre d'un jeu vidéo, l'idée même d'une page étant « chargement effectué » est obtuse.