2013-01-24 15 views
16

Come posso ricevere una notifica quando UITextFieldbecomeFirstResponder?ricevere una notifica quando UITextField diventaFirstResponder

posso controllare come isFirstResponder o impostato per diventare il primo risponditore da becomeFirstResponder

voglio ricevere la notifica o di gestire un evento quando un utente fanno di questo campo di testo first responder.

Grazie.

risposta

30

Avrete bisogno di essere venuto delegato del campo di testo e implementare questo metodo delegato opzionale:

- (void)textFieldDidBeginEditing:(UITextField *)textField; 
11

Oltre attuazione del metodo textFieldDidBeginEditing:UITextFieldDelegate, è possibile registrarsi per il UITextFieldTextDidBeginEditingNotification notifica.

Il metodo di notifica potrebbe essere:

- (void)someTextFieldDidBeginEditing:(NSNotification *)notification { 
    UITextField *textField = (UITextField *)notification.object; 
} 
0

per OSX si dovrebbe essere a conoscenza di pulsanti che hanno effetti collaterali quando basandosi sul NSControlTextDidBeginEditingNotification.

Quando si avvia la modifica, si premono alcuni pulsanti e si riprende la modifica del campo di testo, non si ottiene un secondo NSControlTextDidBeginEditingNotification quando si riprende la modifica.

Nel caso in cui questo comportamento causi un problema, UITextFieldTextDidChangeNotification potrebbe essere un'alternativa.

2

Il delegato è sicuramente la strada da percorrere. Sfortunatamente, nella mia situazione non ho potuto usarlo, perché il controller era il delegato della mia sottoclasse UITextField e avevo bisogno di modificare il suo testo segnaposto. Invece ho scavalcato i metodi - (BOOL)canBecomeFirstResponder; & - (BOOL)resignFirstResponder;. Assicurati di chiamare super.

+0

Sì, il tuo commento per ricordare di chiamare super risolto il mio problema. –

Problemi correlati