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:

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


  • CéroceCéroce Membre, Modérateur
    juin 2014 modifié #5

    Il faut bien sur que tu return FALSE; dans la méthode shouldStartLoadWithRequest

    Non, il faut retourner NO.
    ;-) #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.


  • samirsamir Membre

    Hello,


     


     La méthode :



    - (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType

    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.

  • NSMaximeNSMaxime Membre
    juin 2014 modifié #8

    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).



    - (BOOL) webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType
    {
    NSURL *url = [request URL];
    if ([url.absoluteString rangeOfString:@login].location != NSNotFound)
    {
    return NO;
    }
    else{
    return YES;
    }
    }

  • samirsamir Membre

    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 ?



    NSLog(@url.absoluteString %@",url.absoluteString);
  • AliGatorAliGator Membre, Modérateur
    Oui je parierai aussi pour 2 requêtes qui sont envoyées sur le clic (surtout si ce sont des sites comme Facebook ou autre, c'est classique) aussi, comme samir.
  • Effectivement, de multiples requêtes sont envoyées !


     


    Encore merci pour votre aide, je vais m'efforcer de trouver une solution maintenant.



  • 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.


Connectez-vous ou Inscrivez-vous pour répondre.