Disons que j'ai le code suivant:
IBOutlet UITextField* nameTextField;
IBOutlet UILabel* greetingLabel;
Je voudrais greetingLabel
lire "Hello [nameTextField]" dès que l'utilisateur appuie sur une touche.
Ce dont j'ai besoin, c'est l'équivalent iPhone de la méthode déléguée Cocoa controlTextDidChange
.
La textField:shouldChangeCharactersInRange:
méthode déléguée est appelée à chaque fois qu'une frappe se produit:
- (BOOL) textField:(UITextField *)textField
shouldChangeCharactersInRange:(NSRange)range
replacementString:(NSString *)string
L'argument chaîne renvoie le caractère appuyé. La textField
valeur réelle ( nameTextField.text
) reste cependant vide.
Qu'est-ce que j'oublie ici? (Je voudrais nameTextField
refléter la chaîne exacte que l'utilisateur a entrée jusqu'à présent).
la source
[textField addTarget:self action:@selector(textFieldEditingChanged:) forControlEvents:UIControlEventEditingChanged]
;).vous pouvez enregistrer une action pour l'événement UIControlEventEditingChanges dans le champ de texte:
...
la source
UITextField
a une notificationUITextFieldTextDidChange
qui sera déclenchée chaque fois que le texte change si vous vous y inscrivez. Inscrivez-vous simplement pour cette notification et dans la méthode appelée par la notification, modifiez le texte de l'étiquette.Pour ajouter à cela, l'objet passé à votre gestionnaire de notifications aura le texte du
UITextField
.J'espère que cela pourra aider.
la source