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


90

J'ai un bouton et un champ de texte à mon avis. lorsque 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 j'appuie sur le clavier, le clavier disparaît et quelque chose se passe. Comment puis-je faire ceci?


1
Double

Réponses:


185

Assurez-vous que "self" s'abonne à UITextFieldDelegateet initialise 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 dans Swift:

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

10

Avec style d'extension dans Swift 3.0

Tout d'abord, configurez un délégué pour votre champ de texte.

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

Puis conformez-vous à UITextFieldDelegatedans 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
    }
}

4

Bien que les autres réponses fonctionnent correctement, je préfère faire ce qui 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

Utilisez le mécanisme UIKit Target-Action pour l'événement UIE "primaryActionTriggered" envoyé depuis UITextField lorsqu'un bouton clavier terminé est appuyé.

textField.addTarget(self, action: Selector("actionMethodName"), for: .primaryActionTriggered)
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.