Comment dismiss keyboard dans une UITextView (pas UITextField)

#1

Bonsoir à tous.
Je m’en remet une fois de plus à vous car après moultes recherches impossible de trouver une bonne solution.

Comment faites-vous pour enlever le clavier après avoir entrer du texte dans une UITextView (scrollView) ?
J’ai implémenter ceci mais ça ne fonctionne que pour les UITextField.:

extension UIViewController {
func hideKeyboardWhenTappedAround() {
    let tap: UITapGestureRecognizer = UITapGestureRecognizer(target: self, action: #selector(UIViewController.dismissKeyboard))
    tap.cancelsTouchesInView = false
    view.addGestureRecognizer(tap)
}

@objc func dismissKeyboard() {
    view.endEditing(true)
    view.resignFirstResponder()
}

J’ai aussi testé ceci sans succès :

func textViewShouldEndEditing(_ textView: UITextView) -> Bool {
        self.ui_descriptionTextView.endEditing(true)
        textView.resignFirstResponder()
        dismissKeyboard()
        return false
 }
#2

J’ai trouvé ça, c’est enlève le clavier quand, tu touches à l’extérieur du textview

 override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
    view.endEditing(true)
    super.touchesBegan(touches, with: event)
}

Tu as aussi la solution du bouton Done au dessus du clavier.

#3

J’utilise une variante du code qu’a mis @anthonyfassler1 et ça fonctionne bien.

#4

@anthonyfassler1 merci bien. J’avais déjà implémenté ce code dans la ligne super.touchesBegan(touches, with: event)

Et bien je viens de tester. Mais sur mon iPhone 6S+ ça fonctionne pas plus qu’en :frowning_face: :shushing_face:
Je n’arrive même pas à repasser aux autres TextField par exemple.

@schtipoun : test sur un xib ou sur un storyboard ?

#5

Salut!

As-tu essayé d’utiliser le UITextFieldDelegate ?

Tu peux ainsi appeler certaines fonctions lié a un textfield.

func textFieldShouldReturn(_ textField: UITextField) -> Bool {
        ui_name_enter.resignFirstResponder()
        isPlayerReady()
        
        return true
    }

Edit : j’avais pas vu ton code … As-tu essayé de renvoyer “true” a ta fonction textViewShouldEndEditing ?

Nicolas.

#6

J’ai testé avec un storyboard ça fonctionne sur le simulateur.
Par contre si, ton textView prend tout la place ça ne fonctionneras pas avec cette méthode.

1 Like
#7

Ça fonctionne sans delegate sur une application envoyée sur iPhone.
Je commence à saisir du texte dans la textview et si je clique en dehors du clavier et en dehors de la textview, le clavier disparaît.

1 Like
#8

@anthonyfassler1 : Oui en effet, c’est sûr !!

@Nicow : J’aurais dû tester ça plus tôt le soucis venait de la.
Une fois de plus, l’erreur se situait entre le clavier et la chaise !!! :laughing:

#9

T’as pensé à acheter une version plus récente de ton interface clavier/chaise ?