У меня есть 3 UITextFields в сгруппированном UITableView, и я пытаюсь определить правильную логику, чтобы мой UIBarButtonItem был активирован, только когда ни одно из UITextFields не пусто.
В настоящее время я использую - (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
метод делегата UITextField для обнаружения изменений символа поля за символом, но он дает противоречивые результаты.
Есть идеи?
Редактировать: вот код, который я сейчас использую. Как вы можете видеть, я поместил свои текстовые поля в массив, чтобы я мог перебирать их. Как и сейчас, кнопка сохранения не активируется, пока я не введу 2-й символ в 3-е поле. Также он поочередно включается / отключается как удаляющиеся символы один за другим из полей.
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;