Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Cocoa NSNumberFormatter在违反约束时擦除值_Cocoa_Nstextfield - Fatal编程技术网

Cocoa NSNumberFormatter在违反约束时擦除值

Cocoa NSNumberFormatter在违反约束时擦除值,cocoa,nstextfield,Cocoa,Nstextfield,我刚转到XCode 4,从MacOS10.5SDK转到了10.6SDK。改变的一个行为是,使用NSNumberFormatter将无效文本输入NSTextField会导致整个字段的内容被擦除,而不是禁止添加伪字符 在我的示例中,我有一个NSNumberFormatter,最小值为1,最大值为10000000,isLenient,本地化为on。输入一个像“123”这样的值就可以了。键入字母“x”,整个值将被擦除 当访问字段的stringValue或intValue时,会发生擦除 文本字段和数字格式

我刚转到XCode 4,从MacOS10.5SDK转到了10.6SDK。改变的一个行为是,使用NSNumberFormatter将无效文本输入NSTextField会导致整个字段的内容被擦除,而不是禁止添加伪字符

在我的示例中,我有一个NSNumberFormatter,最小值为1,最大值为10000000,isLenient,本地化为on。输入一个像“123”这样的值就可以了。键入字母“x”,整个值将被擦除

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

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

发生的另一件奇怪的事情是,当输入一个大于10000的值时,整个值都被擦除。-[controlTextDidChange]中的字符串值为“100000”,计算后立即更改为空字符串

更新: 有人建议:


尝试以下操作:子类NSNumberFormatter,并实现isPartialStringValid:proposedSelectedRange:originalString:originalSelectedRange:errorDescription:(首选)或isPartialStringValid:newEditingString:errorDescription:。您可能必须设置PartialStringValidationEnabled:是。

我现在遇到了完全相同的问题,这真的很烦人。“
NSTextField with NumberFormatter
”只允许数字。如果您试图设置字符而不是数字,它将只显示一个空字符串。