Chiudere Keyboard
In questo Tutorial vedremo come risolvere il problema della chiusura della tastiera quando utilizziamo le TextField o altro elemento che richiede il suo utilizzo.
Quando viene richiamata la tastiera, al Tap su un eventuale bottone di invio dei dati inseriti o sul tasto “Invio” presente sulla tastiera o in una parte qualunque dello schermo ci si aspetta la chiusura della stessa.
Se proviamo ad utilizzarla in un progetto ed effettuiamo una delle tre operazioni sopra citate e rappresentate nella figura qui a fianco, noteremo che, la tastiera non si chiude.
Tale operazione (che Noi diamo per scontato) non viene eseguita in modo automatico ma deve essere gestita tramite codice.
Ora vediamo i passi da effettuare per eliminare il problema tramite codice.
import UIKit
class ViewController: UIViewController, UITextFieldDelegate {
// Riferimenti
@IBOutlet weak var titolo: UILabel!
@IBOutlet weak var textBox: UITextField!
override func viewDidLoad() {
super.viewDidLoad()
// Assegno Delegato
textBox.delegate = self
}
Nel codice riportato sopra ho creato una TextField chiamandola “textBox“, a questo punto ho ereditato nella classe “ViewController” il protocollo “UITextFieldDelegate” e nel metodo “viewDidLoad” ho assegnato alla textField il delegato.
// Action Bottone
@IBAction func actionBottone(_ sender: UIButton) {
// assegno alla textBox il metodo resignFirstResponder()
textBox.resignFirstResponder()
}
Poi ho assegnato una azione alla bottone “Invia” e al suo interno ho assegnato alla textField il metodo “resignFirstResponder()” che ci permetterà di chiudere la tastiera quando sarà fatto Tap sul bottone.
// Return sulla tastiera
func textFieldShouldReturn(_ textField: UITextField) -> Bool {
self.view.endEditing(true)
return true
}
A questo punto ho richiamato il metodo “textFieldShouldReturn” impostando il return su true. Questo metodo permetterà la chiusura della tastiera quando sarà effettuato un Tap sul bottone invia presente sulla stessa.
// Chiusura tap parte bianca della view
override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
textBox.resignFirstResponder()
}
Infine ho effettuato un override del metodo “touchesBegan” e la suo interno ho nuovamente assegnato il metodo “resignFirstResponder()” al textfield. Così facendo ad ogni tocco sullo schermo in una parte bianca della tastiera verrà chiusa.
Per qualunque dubbio o domanda scrivete un commento in questa lezione.
Materiale Progetto


