È possibile ottenere UITextField o UITextView attualmente attivi in un UIView, in modo da poter nascondere la tastiera con [text resignFirstResponder];
?Come ottenere UITextField/UITextView attualmente attivi e resignFirstResponder?
risposta
Come di iOS 2.0 e più tardi, c'è un modo semplice per chiudere la tastiera senza hav per rintracciare il controllo attualmente attivo, o scorrere tra tutti i controlli disponibili, oppure usare un UITextFieldDelegate
.
[self.view endEditing:YES]
Dalla documentazione:
endEditing:
Provoca la vista (o uno dei suoi campi di testo incorporati) per dimissioni del primo stato di responder.
- (BOOL
) endEditing :(BOOL
) vigoreParametri
vigore
SpecificareYES
per costringere il primo soccorritore di dimettersi, indipendentemente dal fatto che vuole fare così.
Return Value
YES
se la vista è dimesso il primo stato di responder oNO
se non lo ha fatto.Discussione
Questo metodo guarda alla vista corrente e della sua gerarchia visualizzazione secondaria per il campo di testo che è attualmente il primo responder. Se ne trova uno, chiede che il campo di testo si dimettiti come primo risponditore. Se il parametro force è impostato suYES
, il campo di testo non viene mai nemmeno richiesto; è costretto a dimettersi.
È possibile seguire se si desidera specificamente recuperare il campo di testo del risponditore. Get the current first responder without using a private API
è anche possibile utilizzare il codice seguente se desideri solo respingere campo di testo attivo tastiera-
- (BOOL)textFieldShouldReturn:(UITextField *)textField {
[textField resignFirstResponder];
return YES;
}
Non v'è alcun modo per ottenere direttamente ciò oggetto è l'attuale primo soccorritore (che io sappia, almeno) senza testarli singolarmente. Che cosa si può fare è quello di creare un metodo che contiene tutte le subviews che, concettualmente, potrebbe essere il primo risponditore attivo, come segue:
- (void)dismissKeyboard {
if (myTextField1.isFirstResponder) {
[myTextField1 resignFirstResponder];
}
else if (myTextField2.isFirstResponder) {
[myTextField2 resignFirstResponder];
}
else if (myTextField3.isFirstResponder) {
[myTextField3 resignFirstResponder];
}
else if (myTextField4.isFirstResponder) {
[myTextField4 resignFirstResponder];
}
}
In realtà, però, tendo a farlo in questo modo, senza prima verificare se una particolare UIView è l'attuale primo soccorritore, e non credo che ci sia alcun successo apprezzabile prestazioni/problema (che ho notato in ogni caso):
- (void)dismissKeyboard {
//Send resignFirstResponder message to all possible first responders...
[myTextField1 resignFirstResponder];
[myTextField2 resignFirstResponder];
[myTextField3 resignFirstResponder];
[myTextField4 resignFirstResponder];
}
Speranza che aiuta ...
Questo non è necessario, [self.view endEditing: YES] ; andrà bene –
Questo codice swift funziona nel trovare il primo soccorritore:
func findActiveResponderFrame(view:UIView)->UIView?{
if view.isFirstResponder() {
return view
} else {
for sub in view.subviews {
if let subView = sub as? UIView,
found = findActiveResponderFrame(subView){
return found
}
}
}
return nil
}
Aggiornamento per Swift 3
Questa funzione nasconde la tastiera di qualsiasi campo di testo attivo a Swift 3:
override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
self.view.endEditing(true)
}
- 1. Ottenere l'elenco dei thread gestiti attualmente attivi in .NET?
- 2. UISearchBar e resignFirstResponder
- 3. Disattivare temporaneamente tutti i gestori di eventi jQuery attualmente attivi
- 4. passivi e attivi prese
- 5. Ottenere valore Combobox attualmente selezionato e usarlo come variabile
- 6. resignFirstResponder intesa con UITextField
- 7. Come rendere UITextView il pulsante "Fatto" resignFirstResponder?
- 8. Come ottenere l'elenco di trigger attivi su un database?
- 9. Esempio di UITextField ResignFirstResponder con Monotouch
- 10. Come ottenere gli extra dell'attività attualmente in esecuzione tramite ADB
- 11. Come posso ottenere il riferimento al modulo modale attualmente attivo?
- 12. Come ottenere il percorso della DLL attualmente in esecuzione?
- 13. Vim: come ottenere la modalità Sono attualmente in
- 14. Come ottenere la lingua (locale) attualmente visualizzata l'app per Android?
- 15. Come ottenere la directory dei file attualmente eseguita in CasperJS
- 16. Dove posso ottenere la libreria di modelli attivi?
- 17. Come ottenere il ruolo dell'utente attualmente connesso in wordpress?
- 18. Come ottenere un elenco di ruoli per l'utente attualmente connesso
- 19. Come ottenere gli elementi attualmente visualizzati in AdapterView?
- 20. Come ottenere l'ID utente attualmente registrato in Pyrocms?
- 21. Come ottenere il ruolo dell'utente attualmente connesso in Drupal 7?
- 22. Come ottenere il modulo attualmente attivo nella mia applicazione?
- 23. Come ottenere l'id utente dell'utente attualmente connesso in Django?
- 24. resignFirstResponder() in tastiere di terze parti
- 25. Hover e stati attivi in meno
- 26. resignFirstResponder per tutti i campi di testo
- 27. resignFirstResponder per UIPicker in UITextField Swift
- 28. Perché UITextField si anima su resignFirstResponder?
- 29. Controllare i timer attivi in Erlang
- 30. Come rendere i servizi attivi altamente disponibili?
possibile duplicato di [Come determinare il UITextField attualmente selezionato?] (http://stackoverflow.com/questions/8956704/how-can-i-determine-the-uitextfield-currently-selected) –