J'essaie de créer un filtre pour UIWebView et j'ai du mal à détecter la fin du chargement de UIWebView. J'ai utilisé les deux méthodes suivantes
– webView:shouldStartLoadWithRequest:navigationType:
– webViewDidFinishLoad:
mais le problème est qu'ils seront appelés plusieurs fois lorsqu'une page aura des cadres et du contenu supplémentaire à charger.
Ce dont j'ai besoin, c'est de savoir quand la vue est complètement chargée et qu'il n'y a plus de contenu à récupérer. Ensuite, lorsque le contenu est chargé, je peux vérifier l'URL de la page par rapport à une liste d'URL approuvées.
Des idées?
Utilisez la méthode de protocole UIWebViewDelegate
webViewDidFinishLoad
et webView's isLoading property
- (void)webViewDidFinishLoad:(UIWebView *)webView
{
//Check here if still webview is loding the content
if (webView.isLoading)
return;
//after code when webview finishes
NSLog(@"Webview loding finished");
}
Version Swift 3:
func webViewDidFinishLoad(_ webView: UIWebView) {
if webView.isLoading{
return
}
print("Done loading")
}
Il est vrai que la question initiale a été postée il y a de nombreuses années. Récemment, j'ai dû trouver une solution fiable à ce problème.
Voici la solution qui a fonctionné pour moi:
Le code complet est:
- (void)webView:(WKWebView *)webView didFinishNavigation:(null_unspecified WKNavigation *)navigation{
[webView evaluateJavaScript:@"document.body.innerHTML" completionHandler:^(id result, NSError *error) {
if (result != nil) {
// Call your method here
}
if(error) {
NSLog(@"evaluateJavaScript error : %@", error.localizedDescription);
}
}];
}
Essayez d'utiliser:
- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)requestURL navigationType:(UIWebViewNavigationType)navigationType {
NSURL *url = [requestURL URL];
NSLog(@"##### url = %@",[url absoluteString]);
return YES;
}
n'oubliez pas de définir votre délégué UIWebView
ou ajouter une déclaration,
NSRange range = [[url absoluteString] rangeOfString:@"https://www.google.com"];
if (range.location != NSNotFound)
{}
j'espère vous aider.