Tôi đang làm việc trên một chế độ xem có nhiều đối tượng UITextField
. Trình điều khiển xem của tôi đóng vai trò là UITextFieldDelegate
và tôi đã triển khai phương thức (BOOL)textFieldShouldEndEditing:(UITextField *)textField
để lưu và xác thực bản ghi đang được hiển thị.textFieldShouldEndChỉnh sửa được gọi nhiều lần
Nếu người dùng nhấp vào nút "Xong" sau khi chỉnh sửa mục và lưu/xác thực không thành công, thì UIAlertView
được hiển thị và người dùng được giữ trên UITextField
không xác thực.
Vấn đề của tôi là thế này - khi người dùng nhấp từ UITextField
rằng sẽ thất bại tiết kiệm/xác nhận vào một trong những UITextField
s, sau đó phương pháp (BOOL)textFieldShouldEndEditing:(UITextField *)textField
được gọi là nhiều lần, và UIAlertView
bật lên nhiều lần.
Tại sao (BOOL)textFieldShouldEndEditing:(UITextField *)textField
được gọi một lần khi người dùng nhấp vào "Xong" trên bàn phím nhưng được gọi nhiều lần khi người dùng nhấp vào một số khác UITextField
?
Đây là mã của tôi:
- (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;
}