Проверка записей управления

NSControl обеспечивает метод делегации control:isValidObject: для проверки содержания ячеек, встроенных в средства управления (экземпляры NSTextField и NSMatrix в частности). В проверке Вы проверяете на значения, которые допустимы как объекты, но которые являются нежелательным в данном контексте, таком как поле даты, в котором даты никогда не должны быть в будущем или почтовых индексах, которые допустимы для определенного состояния.

Метод control:isValidObject: вызывается, когда точка вставки оставляет ячейку (т.е. связанное управление оставляет состояние первого респондента), но прежде чем строковое значение объекта ячейки выведено на экран. Возвратиться YES позволить дисплей строки и NO отклонить дисплей и возвратить курсор ячейке. Если дата находится в будущем, следующий пример Objective C оценивает объект (NSDate) и отклоняет его:

- (BOOL)control:(NSControl *)control isValidObject:(id)obj
{
    if (control == contactsForm) {
        if (![obj isKindOfClass:[NSDate class]]) return NO;
        if ([[obj laterDate:[NSDate date]] isEqual:obj]) {
            NSRunAlertPanel(@"Date not valid",
                @"Reason: date in future", NULL, NULL, NULL);
            return NO;
        }
    }
    return YES;
}

NSControl обеспечивает несколько методов делегата для своих подклассов, позволяющих редактирование текста, такое как NSTextField и NSMatrix. Некоторые вызываются, когда средства форматирования для ячеек управления не могут отформатировать строку (control:didFailToFormatString:errorDescription:) или отклоните частичную строковую запись (control:didFailToValidatePartialString:errorDescription:). NSControl также обеспечивает control:textView:doCommandBySelector:, который позволяет делегатам возможность обнаружить и реагировать на привязки клавиш, такой как complete: (назовите завершение). Обратите внимание на то, что несмотря на то, что NSControl определяет методы делегата, он самостоятельно не имеет делегата. Любой подкласс, использующий методы делегата, должен содержать делегата и методы, чтобы получить и установить его.