2017-10-03 4 views
1

Je souhaite masquer le clavier à chaque fois qu'un utilisateur clique sur le champ de texte nommé typeDeProbleme. Donc, j'ai fait quelque chose comme ci-dessous (dans la condition if) qui, à mon sens, aurait dû fonctionner mais malheureusement ce n'est pas le cas. Chaque fois que je clique sur le typeDeProbleme, le clavier est bloqué et ne peut pas être caché à moins que je clique sur un autre champ de texte. Pour votre information, typeDeProbleme est un textField lié à un PickerView. J'ai également attaché une barre d'outils sur le dessus de mon clavier qui ont un bouton X pour cacher le clavier. Quelqu'un peut-il m'expliquer où est le problème?Masquer le clavier lorsqu'un champ de texte est cliqué

enter image description here

func textFieldDidBeginEditing(_ textField: UITextField) { 
    textField.returnKeyType = .next 

    if textField == self.typeDeProbleme { 
     textField.endEditing(true)// hide keyboard 
     textField.resignFirstResponder() //hide keyboard 
     self.pbTypePickerV.isHidden = false 
    }else{ 
     keyboardDidShow(vvv: textField) 
    } 
} 
+0

Pourquoi avez-vous besoin d'un champ de texte pour afficher une vue de sélecteur? –

+0

Vous pouvez vous y référer - [link] (https://stackoverflow.com/questions/26819423/show-uipickerview-text-field-is-selected-then-hide-after-selected) – zaki

Répondre

0

Utilisez cette méthode au lieu textFieldDidBeginEditing

func textFieldShouldBeginEditing(_ textField: UITextField) -> Bool { 
    if textField == typeDeProbleme { 
     self.view.endEditing(true) 
     return false 
    } 
    return true 
} 
+0

Déjà essayé ... didn 't travail – zaki

+0

@zaki vous essayez cette ligne? textField.endEditing (true) – maxkoriakin

+0

@zaki vous devriez écrire self.view.endEditing (true), pour appeler cette méthode du contrôleur, pas textField – maxkoriakin