Angenommen, ich habe den folgenden Code:
IBOutlet UITextField* nameTextField;
IBOutlet UILabel* greetingLabel;
Ich möchte das greetingLabel
"Hallo [nameTextField]" lesen, sobald der Benutzer eine beliebige Taste drückt.
Was ich im Grunde brauche, ist das iPhone-Äquivalent der Cocoa-Delegate-Methode controlTextDidChange
.
Die textField:shouldChangeCharactersInRange:
Delegate-Methode wird jedes Mal aufgerufen, wenn ein Tastenanschlag auftritt:
- (BOOL) textField:(UITextField *)textField
shouldChangeCharactersInRange:(NSRange)range
replacementString:(NSString *)string
Das Zeichenfolgenargument gibt das gedrückte Zeichen zurück. Der tatsächliche textField
Wert ( nameTextField.text
) bleibt jedoch leer.
Was fehlt mir hier? (Ich möchte nameTextField
die genaue Zeichenfolge wiedergeben, die der Benutzer bisher eingegeben hat).
quelle
[textField addTarget:self action:@selector(textFieldEditingChanged:) forControlEvents:UIControlEventEditingChanged]
;).Sie können eine Aktion für das Ereignis UIControlEventEditingChanges im Textfeld registrieren:
...
quelle
UITextField
hat eine Benachrichtigung,UITextFieldTextDidChange
die jedes Mal ausgelöst wird, wenn sich der Text ändert, wenn Sie sich dafür registrieren. Registrieren Sie sich einfach für diese Benachrichtigung und ändern Sie in der von der Benachrichtigung aufgerufenen Methode den Text des Etiketts.Um dies hinzuzufügen, enthält das an Ihren Benachrichtigungshandler übergebene Objekt den Text des
UITextField
.Hoffentlich hilft das.
quelle