Gestion des interactions sur UIWebView
Bonjour à tous,
J'aurais souhaité savoir si il était possible (je pense que oui) de limiter l'usage d'un utilisateur sur une UIWebView?
Je m'explique. Je souhaiterais, par exemple, qu'un utilisateur puisse accéder à la page Facebook de quelqu'un sans pouvoir cliquer sur la partie "Login" ou sans aller sur un autre site internet.
Je voudrais en quelque sort, restreindre l'accès à une seule page ou à quelqu'unes prédéfinies.
Pourriez-vous me donner des pistes pour pouvoir implémenter cette solution?
Je pensais modifier le code HTML de la page "à chaud" avant de l'afficher?
Merci par avance.
Mots clés:
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
Bonjour Maxime,
pour cela tu as une méthode de delegate:
- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType
cela te permet d'intercepter un click (alors que modifier l'HTML à la volée, je suis pas sur que ce soit très "simple")
Bonjour,
Le problème que je rencontre maintenant est que lorsque je clique sur un bouton de ma page web, la page que je souhaite bloquer s'affiche quand même et ensuite la méthode shouldStartLoadWithRequest est appelée et annule donc la requête. Mais je souhaite annuler cette requête avant que celle-ci soit affichée.
Il faut bien sur que tu return FALSE; dans la méthode shouldStartLoadWithRequest
;-) #TuT'esCruEnJavaOuQuoi?
Oui bien sur qu'il faut retourner NO mais là n'est pas mon problème. En fait, ma page est chargée et ensuite je rentre dans la méthode. Une fois dans la méthode tout fonctionne, c'est juste que la page est chargée et affichée pendant 2 ou 3 secondes puis disparait automatiquement vu que la requête est annulée grâce au shouldStartLoadWithRequest.
Hello,
La méthode :
Est appelé avant le chargement de la frame. Donc si ta webView se charge ensuite disparait c'est que y a bien un autre problème.
Merci pour vos réponses.
Pour préciser un peu plus le contexte, ma webView est bien affichée. C'est seulement quand je veux sélectionner un autre élément de la page et le bloquer que cela ne fonctionne pas.
Dans mon cas : Je lance la page A dans ma webView et veut rendre la sélection de la page B (via un bouton de la page A) impossible.
La page A est bien affichée, mais lorsque je sélectionne le bouton qui renvoit vers la page B (qui est une page de login), celle-ci est affichée pendant 3 secondes puis la méthode shouldStartLoadWithRequest est appelée ce qui implique un retour à la page A (cf : code ci-dessous).
Ok.
Je pense que y a deux requêtes au click sur le button de la pageA et que tu intercepte que la deuxième.
Si tu mets un log dans la méthode shouldStart.. au click sur le button de la pageA. ça donne quoi ?
Effectivement, de multiples requêtes sont envoyées !
Encore merci pour votre aide, je vais m'efforcer de trouver une solution maintenant.
Erratum : Les requêtes sont bien multiples mais le problème persiste. la page est chargée et affichée et ensuite les requêtes sont envoyées (ce qui parait bizarre...)
Surement un coup de Javascript.