グループ化されたUITableViewに3つのUITextFieldがあり、どのUITextFieldも空でない場合にのみ、「保存」UIBarButtonItemを有効にする正しいロジックを見つけようとしています。
現在、- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
UITextFieldデリゲートメソッドを使用して、フィールドへの変更を1文字ずつ検出していますが、一貫性のない結果が得られています。
何か案は?
編集:これが私が現在使用しているコードです。ご覧のとおり、テキストフィールドを配列に配置して、繰り返し処理できるようにしました。現在のように、3番目のフィールドに2番目の文字を入力するまで、保存ボタンは有効になりません。また、フィールドから文字を1つずつ削除することで、有効と無効を交互に切り替えます。
NSString *newString = [textField.text stringByReplacingCharactersInRange:range withString:string];
BOOL allValid;
if (newString.length)
{
// Cycle through array checking for completeness
for (int i = 0; i < [textFieldArray count]; i++)
{
if ([[[textFieldArray objectAtIndex:i] text] length] > 0)
{
allValid = YES;
NSLog(@"TextField #%i Validates.", i);
}
else
{
allValid = NO;
NSLog(@"TextField #%i Does Not Validate.", i);
}
}
}
else
{
NSLog(@"Invalid");
allValid = NO;
}
if (allValid)
[saveButton setEnabled:YES];
else
[saveButton setEnabled:NO];
return YES;