Désactiver les liens dans UIWebView?
Je suis le chargement de certains contenus du site web dans un UIWebView
, mais j'aimerais que tous les liens soient désactivés dans le UIWebView
. Est-ce possible? J'ai pu analyser le texte, mais je suis à la recherche de quelque chose de plus facile.
- Vous pouvez le faire en exécutant un bout de code javascript dans votre webview,
-[UIWebView stringByEvaluatingJavaScriptString:].
- savez-vous ce script ?
Vous devez vous connecter pour publier un commentaire.
Vous pouvez donner la
UIWebView
un délégué et de mettre en œuvre la-webView:shouldStartLoadWithRequest:navigationType:
méthode du délégué àreturn NO;
(à l'exception du chargement initial).Qui empêche l'utilisateur de voir quelque chose, mais que seule page.
De fournir un exemple demandé dans les commentaires... Commencer par
allowLoad=YES
et puis:YES
mais il est fixé àNO
dans-webViewDidFinishLoad:
.webViewDidFinishLoad
n'est pas un booléen. Alors, comment pouvons-nous y retourner?-webViewDidFinishLoad
est appelé comme une indication que le premier chargement est terminé. Une fois que la méthode est appelée, vous savez que vous pouvez ensuite revenirNO
de lashouldStartLoadWithRequest:...
méthode dans l'avenir.Testé dans Swift 4.0: Cette approche n'implique pas d'avoir une variable supplémentaire pour tester si c'est le chargement initial ou non. Il suffit de vérifier le type de demande (dans ce cas, LinkClicked) et renvoie la valeur false dans ce cas. Sinon, il suffit de le retourner vrai!
(Bien sûr, assurez-vous de définir le
webView.delegate
)Vous pouvez désactiver les données de détecter, à partir de votre webview.
Pour swift 3:
Essayez de supprimer les types que vous ne voulez pas afficher en tant que lien de
webView.dataDetectorTypes
Réponse Simple qui fonctionne dans Swift 2.0:
Juste la mettre en œuvre dans le point de vue du contrôleur où vous êtes à la définition et à l'aide de votre vue web et cela fonctionnera parfaitement.
J'avais un besoin similaire et pour certains cas seulement à l'aide de la webViewDidFinishLoad n'était pas assez, j'ai donc utilisé le webViewDidStartLoad de couvrir tous les cas:
Dans certains cas, lorsque le html a été chargé, mais certaines ressources, comme des images et quelques fortes actifs à l'intérieur de la DOM n'étaient pas les didFinishLoad méthode n'a pas été congédié, et l'utilisateur pourra naviguer dans ce "court intervalle.
Une autre réponse pour Swift 3.0 :
Juste donner à zéro pour ne pas détecter tout type de lien de yourWebView code initial