NSNumberFormatter在违反约束时擦除值

时间:2011-11-02 07:23:37

标签: cocoa nstextfield

我刚刚转到XCode 4,从Mac OS 10.5 SDK转移到10.6 SDK。改变的行为是,使用NSNumberFormatter将无效文本输入NSTextField会导致整个字段的内容被删除,而不是禁止添加虚假字符。

在我的例子中,我有一个NSNumberFormatter,最小值为1,最大值为10000000,isLenient,并且本地化。输入一个像“123”的值,没关系。键入字母“x”,整个值将被删除。

访问字段的stringValue或intValue时会发生擦除。

文本字段和数字格式化程序在XIB文件中定义。我希望防止无效输入或者最好容忍和忽略,但是擦除整个值真的不行。

另一个奇怪的事情是,当输入大于10,000的值时,整个值将被删除。 - [controlTextDidChange]中的字符串值为“10,0000”,并在评估后立即更改为空字符串。

更新: 这是在cocoa-dev上提出的:

试试这个:子类NSNumberFormatter,并实现isPartialStringValid:proposedSelectedRange:originalString:originalSelectedRange:errorDescription :( preferred)或isPartialStringValid:newEditingString:errorDescription:。您可能必须setPartialStringValidationEnabled:YES。

0 个答案:

没有答案