Ich arbeite an einer Ansicht, die mehrere UITextField
Objekte hat. Mein View-Controller dient als UITextFieldDelegate
, und ich habe die (BOOL)textFieldShouldEndEditing:(UITextField *)textField
-Methode implementiert, um den angezeigten Datensatz zu speichern und zu validieren.textFieldShouldEndEditing mehrmals aufgerufen
Wenn der Benutzer nach der Bearbeitung eines Elements auf die Schaltfläche "Fertig" klickt und die Sicherung/Validierung fehlschlägt, wird UIAlertView
angezeigt und der Benutzer bleibt auf UITextField
, die die Validierung nicht besteht.
Mein Problem ist, das - wenn ein Benutzer aus den UITextField
klickt, speichern/Validierung auf einem anderen der UITextField
s, dann ist die (BOOL)textFieldShouldEndEditing:(UITextField *)textField
Methode wird aufgerufen, mehrere Male, und die UIAlertView
erscheint mehrmals fehlschlagen.
Warum wird (BOOL)textFieldShouldEndEditing:(UITextField *)textField
einmal aufgerufen, wenn der Benutzer auf der Tastatur auf "Fertig" klickt, aber mehrmals aufgerufen wird, wenn der Benutzer auf eine andere UITextField
klickt?
Hier ist mein Code:
- (BOOL)textFieldShouldEndEditing:(UITextField *)textField {
NSLog(@"textFieldShouldEndEditing called by textField with text=%@", textField.text);
currentItem.nameOrNumber = nameOrNumber.text;
// Try to save the managed object.
NSError *error = nil;
if (![[currentItem managedObjectContext] save:&error]) {
UIAlertView *errorAlert = [[UIAlertView alloc] initWithTitle:NSLocalizedString(@"Uh Oh!",@"")
message:[error localizedDescription]
delegate:self
cancelButtonTitle:NSLocalizedString(@"OK",@"")
otherButtonTitles:nil];
[errorAlert show];
[errorAlert release];
shouldEnd = NO;
}
return shouldEnd;
}