faire disparaà®tre le clavier

Bonjour,


même si cela peut paraà®tre un peu idiot comme question, mais y-a-t-il une manière simple de faire disparaà®tre le clavier après avoir remplir un TextField ?


Merci pour votre aide


Jean-Luc


Réponses

  • Joanna CarterJoanna Carter Membre, Modérateur
    myTextField.resignFirstResponder()
  • Eric P.Eric P. Membre
    janvier 2017 modifié #3

    Bonjour,


     


    Dans la fonction  "textFieldShouldReturn" du UITextFieldDelegate, tu ajoutes un textField.resignFirstResponder()


    Si tu n'as qu'un seul textField sinon il faut distinguer les return qui donne le focus au textField suivant.


     


    Tu devras aussi probablement "overrider" la fonction" touchesBegan" également en ajoutant un ou des .resignFirstResponder() pour permettre le retrait du clavier lors d'un touch ailleurs que sur le textField.


     


     


    --grillé par Joanna--


  • Joanna CarterJoanna Carter Membre, Modérateur
    janvier 2017 modifié #4
    Dans le delegate :

    func textFieldShouldReturn(_ textField: UITextField) -> Bool
    {
    textField.resignFirstResponder()

    return false
    }
  • A quel endroit indiquer ce code ?


  • Joanna CarterJoanna Carter Membre, Modérateur
    On a dit, dans le delegate pour le UITextField
  • Merci


  • Autrement, il y a déjà  un bouton pour le faire sur le clavier lui-même....  :o


  • Joanna CarterJoanna Carter Membre, Modérateur

    Autrement, il y a déjà  un bouton pour le faire sur le clavier lui-même....  :o




    Seulement sur certains claviers, pas sur tous.
  • Si tu as plusieurs champs texte, tu peux aussi faire comme ça, pour avoir un comportement différent sur chaque bouton..


     


    Exemple avec un champ Login, Mot de passe et un bouton de connexion 



    func textFieldShouldReturn(_ textField: UITextField) -> Bool {

    switch(true){
    case (textField === textfieldLogin):
    textfieldMotDePasse.becomeFirstResponder() // met le focus sur le champs MDP
    return true
    case (textField === textfieldMotDePasse):
    view.endEditing(true) // fait disparaitre le clavier
    boutonConnexion.sendActions(for: UIControlEvents.touchUpInside) // Simule un clic sur le bouton "Connexion"
    return false
    default:
    return true
    }

    }

    Si tu valide sur le champ "Login", il passe au champ "Mot de passe".


    Si tu valide sur le champs "Mot de passe", il simule un clic sur le bouton de connexion (et fait disparaitre le clavier avec view.endEditing(true) ) 


  • Joanna CarterJoanna Carter Membre, Modérateur

    case (textField === textfieldMotDePasse):
    view.endEditing(true) // fait disparaitre le clavier
    boutonConnexion.sendActions(for: UIControlEvents.touchUpInside) // Simule un clic sur le bouton "Connexion"
    return false

    Pourquoi t'embrouillerais tu avec l'envoi d'une action ? Tu devrais avoir une méthode pour le bouton ; il ne faut que l'appeler.





  • case (textField === textfieldMotDePasse):
    view.endEditing(true) // fait disparaitre le clavier
    boutonConnexion.sendActions(for: UIControlEvents.touchUpInside) // Simule un clic sur le bouton "Connexion"
    return false

    Pourquoi t'embrouillerais tu avec l'envoi d'une action ? Tu devrais avoir une méthode pour le bouton ; il ne faut que l'appeler.


     




     


    Il me semble que j'ai fais ça pour l'effet visuel sur le bouton, il "bouge" un peu lors du clic dessus..


    Et je crois qu'il ne le faisait pas quand j'appelais la méthode..


     


    Après je t'avoue que je n'ai pas chercher plus loin, monde code faisait ce que je voulais à  ce moment là  et ça m'a suffit ^^

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