NSNumberFormatter стирает значение, когда оно нарушает ограничения - PullRequest
1 голос
/ 02 ноября 2011

Я только что перешел на 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.

...