web-dev-qa-db-fra.com

Comment ajouter une action sur la clé de retour UITextField?

J'ai un bouton et un champ de texte à mon avis. quand je clique sur le champ de texte, un clavier apparaît et je peux écrire sur le champ de texte et je peux également ignorer le clavier en cliquant sur le bouton en ajoutant:

[self.inputText resignFirstResponder];

Maintenant, je veux activer la touche de retour du clavier. quand je vais appuyer sur le clavier clavier disparaîtra et quelque chose va se passer. Comment puis-je faire ceci?

81
razibdeb

Assurez-vous que "self" s'abonne à UITextFieldDelegate et initialisez inputText avec:

self.inputText.delegate = self;

Ajoutez la méthode suivante à "self":

- (BOOL)textFieldShouldReturn:(UITextField *)textField {
    if (textField == self.inputText) {
        [textField resignFirstResponder];
        return NO;
    }
    return YES;
}

Ou à Swift:

func textFieldShouldReturn(textField: UITextField) -> Bool {
    if textField == inputText {
        textField.resignFirstResponder()
        return false
    }
    return true
}
168
Ander

avec le style d'extension Swift 3.

Commencez par configurer un délégué pour votre champ de texte.

override func viewDidLoad() {
    super.viewDidLoad()
    self.inputText.delegate = self
}

Puis conformez-vous à UITextFieldDelegate dans l'extension de votre contrôleur de vue

extension YourViewController: UITextFieldDelegate {
    func textFieldShouldReturn(_ textField: UITextField) -> Bool {
        if textField == inputText {
            textField.resignFirstResponder()
            return false
        }
        return true
    }
}
7
Fangming

Bien que les autres réponses fonctionnent correctement, je préfère procéder comme suit:

Dans viewDidLoad (), ajoutez

self.textField.addTarget(self, action: #selector(onReturn), for: UIControl.Event.editingDidEndOnExit)

et définir la fonction

@IBAction func onReturn() {
    self.textField.resignFirstResponder()
    // do whatever you want...
}
1
Malfunction