Digamos que eu tenha o seguinte código:
IBOutlet UITextField* nameTextField;
IBOutlet UILabel* greetingLabel;
Gostaria greetingLabel
de ler "Hello [nameTextField]" assim que o usuário pressionasse qualquer tecla.
O que eu preciso basicamente é o equivalente para iPhone do método de delegado Cocoa controlTextDidChange
.
O textField:shouldChangeCharactersInRange:
método delegado é chamado sempre que ocorre um pressionamento de tecla:
- (BOOL) textField:(UITextField *)textField
shouldChangeCharactersInRange:(NSRange)range
replacementString:(NSString *)string
O argumento string retorna o caractere que é pressionado. O textField
valor real ( nameTextField.text
) permanece em branco, entretanto.
O que estou perdendo aqui? (Eu gostaria nameTextField
de refletir a string exata que o usuário inseriu até agora).
fonte
[textField addTarget:self action:@selector(textFieldEditingChanged:) forControlEvents:UIControlEventEditingChanged]
;).você pode registrar uma ação para o evento UIControlEventEditingChanges no campo de texto:
...
fonte
UITextField
tem uma notificaçãoUITextFieldTextDidChange
que será disparada toda vez que o texto mudar se você se registrar nele. Basta se cadastrar para aquela notificação e no método chamado pela notificação, alterar o texto do rótulo.Para adicionar a isso, o objeto passado para seu manipulador de notificação terá o texto de
UITextField
.Espero que ajude.
fonte