Azione quando si preme il pulsante con la croce piccolo di UITextField
-
25-10-2019 - |
Domanda
I può aggiungere un piccolo pulsante con la croce che viene utilizzato per cancellare tutto il testo con un click in un UITextField
con il seguente codice.
textField.clearButtonMode = UITextFieldViewModeWhileEditing;
I UITextFieldDelegate
inoltre implementato.
Voglio attivare / disattivare il pulsante della barra destra del UINavigationBar
in base ai cambiamenti nella mia UITextField
. La regola è semplice:. Se il campo di testo ha almeno un carattere, basta attivare il pulsante, altrimenti disattivarlo
ho implementato metodo delegato UITextField
del textField:shouldChangeCharactersInRange:
a verificare costantemente il requisito e aggiornare lo stato del pulsante.
Ora il mio problema è che quando si fa clic sul pulsante di piccola croce sul campo di testo, il metodo textField:shouldChangeCharactersInRange:
non si chiama. Così l'azione richiesta è mancante. Come posso identificare l'evento di successo del pulsante chiaro?
Alcune immagini per mostrare ciò di cui sto parlando.
Fase iniziale: qui, il pulsante "Done" è disabilitata perché non ci sono le lettere nel campo di testo
Quando si digita una lettera, il "Fatto" pulsante è abilitato
Ora, se clicco sul pulsante di cancellazione, il "Fatto" pulsante è ancora abilitato. Questo è sbagliato.
Soluzione
Utilizza il metodo delegato textViewShouldClear:
:
chiede al delegato se contenuto attuale del campo di testo devono essere rimosso.
- (BOOL)textFieldShouldClear:(UITextField *)textField
I parametri
textField
Il campo di testo che contiene il testo.
Valore di ritorno
YES
se il contenuto del campo di testo devono essere cancellati; in caso contrario,NO
.Discussione
Il campo di testo chiama questo metodo in risposta per l'utente preme il pulsante incorporato chiaro. (Questo pulsante non viene mostrata per default ma può essere abilitata cambiando il valore nella proprietà del
clearButtonMode
campo di testo.) Questo metodo viene chiamato anche quando la modifica ha inizio e la ProprietàclearsOnBeginEditing
del campo di testo è impostato suYES
.L'attuazione di questo metodo, il delegato è facoltativo. Se è non presente, il testo viene cancellato come se questo metodo era tornato
YES
. Disponibilità* Available in iOS 2.0 and later.
In Dichiarato UITextField.h
Altri suggerimenti
È possibile utilizzare metodo delegato textFieldShouldClear:
da gestire quando i rubinetti degli utenti sul pulsante Cancella.