Я только что перешел на XCode 4 и с Mac OS 10.5 SDK на 10.6 SDK.Поведение, которое изменилось, заключается в том, что при вводе недопустимого текста в NSTextField с помощью NSNumberFormatter содержимое всего поля стирается, а не запрещается добавление поддельного символа.
В моем примере у меня есть NSNumberFormatter с минимальнымзначение 1, максимальное значение 10000000, isLenient и локализация включены.Введите значение, как «123», и все в порядке.Введите букву «x», и все значение будет стерто.
Стирание происходит при доступе к полю stringValue или intValue.
Текстовое поле и средство форматирования чисел определены в файле XIB.Я хотел бы, чтобы недопустимый ввод был предотвращен или в худшем случае допускался и игнорировался, но стирание всего значения на самом деле не в порядке.
Другая странная вещь, которая случается, заключается в том, что при вводе значения, превышающего 10000, все значение стирается,Строковое значение в - [controlTextDidChange] равно «10,0000», и сразу после оценки изменяется на пустую строку.
ОБНОВЛЕНИЕ: Это было предложено для cocoa-dev:
Попробуйте это: Подкласс NSNumberFormatter и реализация isPartialStringValid: предложилSelectedRange: originalString: originalSelectedRange: errorDescription: (предпочтительно) или isPartialStringValid: newEditingString: errorDescription :.Возможно, вам придется установитьPartialStringValidationEnabled: YES.