iOS Azioni quando un utente ha iniziato / terminato l'interazione con un campo di testo

Esempio

Per Swift 3.1:

Nel primo esempio si può vedere come si intercetta l'utente che interagisce con un campo di testo durante la scrittura. Allo stesso modo, ci sono metodi in UITextFieldDelegate che vengono chiamati quando un utente ha iniziato e terminato la sua interazione con un campo di testo.

Per poter accedere a questi metodi, è necessario conformarsi al protocollo UITextFieldDelegate e, per ogni campo di testo di cui si desidera ricevere una notifica, assegnare la classe padre come delegato:

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

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

}

Ora sarete in grado di implementare tutti i metodi UITextFieldDelegate.

Per ricevere una notifica quando un utente ha iniziato a modificare un campo di testo, è possibile implementare textFieldDidBeginEditing ( metodo _ :) in questo modo:

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 
    } 
}

Allo stesso modo, se ti viene notificato se un utente ha interrotto l'interazione con un campo di testo, puoi utilizzare il metodo textFieldDidEndEditing (_ :) in questo modo:

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 
    } 
}

Se si desidera controllare se un campo di testo dovrebbe iniziare / terminare la modifica, i metodi textFieldShouldBeginEditing (_ :) e textFieldShouldEndEditing (_ :) possono essere utilizzati restituendo true / false in base alla logica richiesta.