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