61 votes

Comment ouvrir le clavier automatiquement sur UITextField ?

J'ai un tableau très simple et lorsque je clique sur une cellule, cela ouvre une nouvelle vue avec un champ UIText. Tout ce que je veux, c'est que le clavier s'ouvre automatiquement, sans que l'utilisateur ait à toucher le champ UIText.

Tout est fait dans Interface Builder, donc je ne suis pas sûr de savoir comment faire. Je suppose que je dois définir le focus à un moment donné ?

Merci

139voto

jessecurry Points 12114

Pour que le clavier s'affiche immédiatement, vous devez définir le champ de texte comme le premier intervenant en utilisant la ligne suivante :

[textField becomeFirstResponder];

Vous pouvez le placer dans la section viewDidAppear: méthode.

30 votes

Je recommande l'option -viewDidAppear :, car elle génère des animations. Générer des animations dans -viewWillAppear peut conduire à des artefacts graphiques, puisque vous n'êtes pas encore à l'écran. Etant donné que vous voulez certainement le faire à chaque fois que vous arrivez à l'écran, -viewDidLoad est probablement redondant (il se produit à chaque fois que la vue est chargée depuis le disque, ce qui est quelque peu imprévisible, et n'est donc pas un bon endroit pour les effets visuels).

0 votes

Avez-vous besoin d'importer le UITextViewDelegate et le connecter ensuite au délégué dans l'IB ?

3 votes

Pour le martinet 3 : override func viewDidAppear(_ animated: Bool) { textField.becomeFirstResponder() }

13voto

Nico S. Points 1221

Swift 3 & 4 :

override func viewDidAppear(_ animated: Bool) {
    super.viewDidAppear(animated)
    textField.becomeFirstResponder()
}

1voto

Shubham Goel Points 649
override func viewDidLoad() {
    super.viewDidLoad()
    textField.becomeFirstResponder()
}

0voto

Yash Points 11

Préfère ajouter le premier répondant sur le fil principal -

 override func viewDidAppear(_ animated: Bool) {
    super.viewDidAppear(animated)
    DispatchQueue.main.async {
        self.textField.becomeFirstResponder()
    }
}

Cela s'avérera utile lorsque la vue du contrôleur de vue sera ajoutée en tant que vue secondaire.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X