我有一个带有数字格式化程序的文本字段,它绑定到一个带有 Cocoa 绑定的变量。还有一个步进器,我绑定到同一个变量以增加值,我使用 NSLog 进行测试,效果很好。
我的问题是:每当我在框中输入数字时,除非我按 Enter,否则变量不会更新。NSTextBox 如何知道用户何时完成输入?有没有办法在输入每个数字后动态更新变量?
非常感谢
富有的
我有一个带有数字格式化程序的文本字段,它绑定到一个带有 Cocoa 绑定的变量。还有一个步进器,我绑定到同一个变量以增加值,我使用 NSLog 进行测试,效果很好。
我的问题是:每当我在框中输入数字时,除非我按 Enter,否则变量不会更新。NSTextBox 如何知道用户何时完成输入?有没有办法在输入每个数字后动态更新变量?
非常感谢
富有的
在 Interface Builder 中打开控件的“Continuous”属性应该会使字段在值更改时触发其绑定。
首先,您确定要立即更新吗?用户的击键之一可能是无效字符(即,不是数字)。NSNumberFormatter 可以提供帮助,但我相信您仍然必须“提交”该条目,然后才能将其验证为正确的数字条目。
其次,您始终可以实现-textDidChange: NSTextDelegate方法。不过,同样的问题与上述相同。可能会触发无效输入。要解决此问题,您可以尝试从字符串输入创建一个 NSNumber,如果您没有获得 NSNumber,请不要费心做出反应,直到您这样做(如果该字段因输入无效而失去焦点,请将其更改回最后一个有效值),但是您正在复制您免费获得的“提交时验证” NSNumberFormatter 行为。