Sie werden feststellen, dass die Methode "textFieldShouldReturn" das Textfeldobjekt bereitstellt, das die Taste DONE gedrückt hat. Wenn Sie den TAG einstellen, können Sie dieses Textfeld einschalten. Oder Sie können den Zeiger des Objekts verfolgen und mit einem vom Ersteller gespeicherten Elementwert vergleichen.
Mein Ansatz für ein Selbststudium ist wie folgt:
- (BOOL)textFieldShouldReturn:(UITextField *)textField {
NSLog(@"%s", __FUNCTION__);
bool fDidResign = [textField resignFirstResponder];
NSLog(@"%s: did %resign the keyboard", __FUNCTION__, fDidResign ? @"" : @"not ");
return fDidResign;
}
In der Zwischenzeit habe ich den "Validierungstest" durchgeführt, der den folgenden Rücktritt leugnet. Es dient nur zur Veranschaulichung. Wenn der Benutzer also NO! in das Feld wird es nicht entlassen. Das Verhalten war wie ich wollte, aber die Reihenfolge der Ausgabe war nicht wie ich erwartet hatte.
- (BOOL)textFieldShouldEndEditing:(UITextField *)textField {
NSLog(@"%s", __FUNCTION__);
if( [[textField text] isEqualToString:@"NO!"] ) {
NSLog(@"%@", textField.text);
return NO;
} else {
return YES;
}
}
Es folgt meine NSLog-Ausgabe für diese Ablehnung, gefolgt von der Annahme. Sie werden feststellen, dass ich das Ergebnis des Rücktritts zurücksende, aber ich habe erwartet, dass es FALSE an mich zurücksendet, um dem Anrufer Bericht zu erstatten?! Davon abgesehen hat es das notwendige Verhalten.
13.313 StudyKbd [109: 207] - [StudyKbdViewController textFieldShouldReturn:]
13.320 StudyKbd [109: 207] - [StudyKbdViewController textFieldShouldEndEditing:]
13.327 StudyKbd [109: 207] NEIN!
13.333 StudyKbd [109: 207] - [StudyKbdViewController textFieldShouldReturn:]: hat die Tastatur verlassen
59.891 StudyKbd [109: 207] - [StudyKbdViewController textFieldShouldReturn:]
59.897 StudyKbd [109: 207] - [StudyKbdViewController textFieldShouldEndEditing:]
59.917 StudyKbd [109: 207] - [StudyKbdViewController doneEditText]: NO
59.928 StudyKbd [109: 207] - [StudyKbdViewController textFieldShouldReturn:]: hat die Tastatur verlassen