Il resto di questa risposta è ancora molto utile, e lascio lì in quanto può potenzialmente aiutare altri askers ... ma qui, ho perso il problema evidente con questo esempio specifico ...
Non stiamo chiamando resignFirstResponder
nel campo di testo. Lo chiamiamo sul controller della vista. Abbiamo bisogno di chiamare sul campo di testo, in modo da modificare il codice per assomigliare a questo:
func textFieldShouldReturn(textField: UITextField) -> Bool {
textField.resignFirstResponder()
return true
}
Un UITextField
chiamerà solo la proprietà textFieldShouldReturn
sull'oggetto che è il suo delegato.
Siamo in grado di risolvere il problema a livello di codice con l'aggiunta di un metodo per impostare viewDidLoad
che:
override func viewDidLoad() {
super.viewDidLoad()
self.textField.delegate = self
}
Ma possiamo anche impostare questa funzione tramite lo storyboard in fase di compilazione.
Fare clic destro sul campo di testo per controllare e vedere se il delegato è stata impostata:
Se quel cerchio accanto al delegate
è vacante, non abbiamo impostato il delegato per la nostra UITextField
ancora.
Per impostare il delegato, passa con il mouse su questa cerchia. Cambierà in un segno più. Ora fai clic e trascina sul controller della vista per il quale vuoi delegare il campo di testo (il controller della vista del quale fa parte il campo di testo).
Quando hai opportunamente agganciato il controller della vista come un delegato, questo menu dovrebbe essere simile a questo: