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.

È stato utile?

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 su YES.

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top