2010-04-07 16 views
12

Quando creo UITextField all'interno di Interface Builder, posso accedere alla scheda Eventi per esso, che ha eventi come Valore cambiato, Annulla tocco, Trascinamento tocco, ecc. Posso assegnare i miei metodi a ciascuno di quegli eventi. Come posso fare lo stesso, quando creo UITextField a livello di programmazione con alloc?UiTextField eventi

+0

Ciao, ho creato un UITextField in Interface Builder e voglio registrare UIControlEventValueChanged. Come procedi? Come definisci quella funzione? – Namratha

risposta

14

Consultare la documentazione Apple per UIControl. Dopo aver inizializzato il tuo textField, chiamare addTarget:action:forControlEvents:

esempio per l'evento di tocco che termina una sessione di modifica

[textField addTarget:self action:@selector(handleTouchValueChanged:) forControlEvents: UIControlEventEditingDidEnd] 
+0

grazie, ha funzionato – Mike

+9

Questo non funziona, è necessario utilizzare UIControlEventEditingChanged –

11

Invece di UIControlEventValueChanged, si dovrebbe usare UIControlEventEditingChanged:

[_titleTextField addTarget:self action:@selector(handleTitleValueChanged:) forControlEvents:UIControlEventEditingChanged]; 
+1

dalla risposta di hajikelist (appartiene qui come commento invece di essere una risposta stessa): UIControlEventEditingChanged si attiva ogni volta che l'utente modifica il valore [sincrono con digitazione o keyup] che potrebbe causa colpi extra alla tua routine di gestione dati, se stai salvando valori basati su quell'evento, aspettandoti che sia una sorta di valore finale da input dell'utente ... (potresti avere un comportamento inaspettato, come avere più salvataggi per ogni text.) – GeneralMike

3

UIControlEventEditingChanged si attiva ogni volta utente cambia il valore [ sincrono con digitazione o keyup] che potrebbe causare accessi extra alla routine del gestore dati, se stai salvando i valori in base a quell'evento, aspettandoti che sia una sorta di valore finale dall'input dell'utente ...

+1

Un buon punto, ma probabilmente dovrebbe essere un commento sotto una delle altre risposte invece di una risposta in sé, dal momento che non hai specificato un'alternativa a quelle risposte. – GeneralMike