Home Tutorial Chiudere Keyboard

Chiudere Keyboard

Closing Keyboard

974
0

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.

Closing Keyboard 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