Fermeture du clavier avec une alertiez

Bonjour,


 


j'ai un petit soucis avec la gestion de mon textView et le déclenchement d'une alert (de type SCAlertView trouvé sur Github). Mon application dispose d'un formulaire, une fois le formulaire remplis l'utilisateur appuit sur un bouton qui lui permet d'envoyer des informations dans un cloud, une alerte d'information est alors ouverte.


 


Le soucis : lors de la pression sur le bouton j'effectue un "endEditing", lorsque le clavier est encore ouvert (dans l'édition du textview) il est donc fermé. Le soucis étant qu'au même moment ou le bouton est pressé une alert apparait, l'animation de fermeture du clavier étant plus longue que l'apparition de l'alert, celle ci est donc décalé et produit un effet visuel non désiré. 


 


Est il possible d'effectuer un endEditing / resignFirstResponder sans l'animation ? 


Ou avez vous une idée de comment palier à  cela ? 


 


Bonne journée,


 


Cordialement 


Réponses

  • AliAli Membre

    Hello,

     


    Une solution peut résoudre ton problème : Lancer ton alert après un certain temps (pas juste avec le clique sur le bouton).


    Tu peux fire ça avec



    dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.5 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
            // Afficher ton alert
        });

    Après, ça pourrait que cette solution ait certains problèmes de fonctionnement dans ton cas, tu peux checker.

  • LarmeLarme Membre

    Potentiellement avec UIKeyboardDidHideNotification.


    Maintenant, sur iPad, on peut dismiss le clavier, donc, il faut peut-être vérifier un truc ou deux (si la TextView a été à  un moment donné firstResponder, etc.)


  • TerflogagTerflogag Membre
    juin 2015 modifié #4

    Merci pour vos réponse, à  priori cela fonctionne : 



    - (IBAction)sendButton:(UIButton *)sender{
        if (![self textViewIsFirstResponder]) {
            [self sendInCloud];
        } else {
            [self.view endEditing:YES];
            dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.5 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
                [self sendInCloud];
            });
        }
    }

    Je vérifie néanmoins avant que le textView en question soit fisrtResponder. 


     


    Bonne journée 


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