iOS Actions lorsqu'un utilisateur a commencé / a fini d'interagir avec un champ de texte


Exemple

Pour Swift 3.1:

Dans le premier exemple, on peut voir comment intercepter l'utilisateur interagissant avec un champ de texte lors de l'écriture. De même, certaines méthodes de UITextFieldDelegate sont appelées lorsqu'un utilisateur a démarré et a mis fin à son interaction avec un objet TextField.

Pour pouvoir accéder à ces méthodes, vous devez vous conformer au protocole UITextFieldDelegate et, pour chaque champ de texte à notifier, affectez la classe parente en tant que déléguée:

class SomeClass: UITextFieldDelegate {
    
    @IBOutlet var textField: UITextField!

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

}

Vous pourrez maintenant implémenter toutes les méthodes UITextFieldDelegate.

Pour être averti lorsqu'un utilisateur a commencé à modifier un champ de texte, vous pouvez implémenter la méthode textFieldDidBeginEditing (_ :) comme suit:

func textFieldDidBeginEditing(_ textField: UITextField) {
    // now you can perform some action 
    // if you have multiple textfields in a class, 
    // you can compare them here to handle each one separately
    if textField == emailTextField {
        // e.g. validate email 
    } 
    else if textField == passwordTextField {
        // e.g. validate password 
    } 
}

De même, être averti si un utilisateur a mis fin à une interaction avec un champ de texte, vous pouvez utiliser la méthode textFieldDidEndEditing (_ :) comme ceci:

func textFieldDidEndEditing(_ textField: UITextField) {
    // now you can perform some action 
    // if you have multiple textfields in a class, 
    // you can compare them here to handle each one separately
    if textField == emailTextField {
        // e.g. validate email 
    } 
    else if textField == passwordTextField {
        // e.g. validate password 
    } 
}

Si vous souhaitez contrôler si un objet TextField doit commencer / finir l'édition, les méthodes textFieldShouldBeginEditing (_ :) et textFieldShouldEndEditing (_ :) peuvent être utilisées en renvoyant true / false en fonction de la logique requise.