2012-08-15 11 views
6

Sto cercando di nascondere la tastiera nell'applicazione SplitView (perché copre una parte del menu principale). Tuttavia, l'unica cosa che riesco a trovare è come nascondere la tastiera dopo l'utilizzo di un campo di testo [TextField resignFirstResponder].Nascondere la UIKeyboard

C'è un altro modo per nascondere la tastiera?
Idealmente mi piacerebbe usare il barButtonItem, che visualizza il menu, come trigger per nascondere la tastiera.

risposta

12

Utilizzare questa:

[[[UIApplication sharedApplication] keyWindow] endEditing:YES]; 
+0

esattamente quello che stavo cercando, funziona perfettamente! – BloonsTowerDefence

0

È necessario inviare il messaggio -resignFirstResponder all'istanza di qualsiasi elemento dell'interfaccia utente attualmente dispone dello stato di primo risponditore. Pertanto, se nella classe è presente una proprietà firstNameTextField corrispondente a un'istanza di UITextField, è necessario inviare il messaggio a tale oggetto.

[self.firstNameTextField resignFirstResponder];

+0

funziona con qualsiasi elemento dell'interfaccia utente? Posso usare un UIBarButtonItem? Tutto il mio problema è che non ho un campo di testo specifico per collegarlo a. – BloonsTowerDefence

+0

Tecnicamente qualsiasi istanza di 'UIView' può diventare la prima risposta in quanto è una sottoclasse di' UIResponder', ma invoca solo la tastiera se la classe è conforme al protocollo 'UITextInput'. Per chiudere la tastiera con un 'UIBarButtonItem', devi connettere quel pulsante a un metodo che richiama' resignFirstResponder' sul campo di testo attivo. Se vuoi solo terminare ciecamente tutte le modifiche, puoi anche inviare 'endEditing:' alla vista root e passerà attraverso le sottoview e dimettera 'il primo risponditore su cui mai la sottoview ha attualmente. –

0

resignFirstResponder è il modo per farlo. Se hai una situazione in cui il tuo FirstResponder non è impostato come variabile di istanza (forse il suo generato), puoi "ottenere" il tuo primoResponder usando this answer. Dopo che hai il tuo primo oggetto risponditore, semplicemente dimettalo!

spero che questo aiuti.

Problemi correlati