带有十进制值的NSStepper

时间:2013-02-02 14:22:04

标签: cocoa nstextfield

是否有人使用NSStepper控件(很多,实际上是......),其中Increment设置为0.1或除整数值以外的任何值,而不是每次都调用setIncrement: NSStepper实例?

我有一个类似编辑器的UI,需要步进器以微小的增量更改其附加值NSTextField的值。

在Interface Builder(IB)中将增量设置为十进制值会导致它将其四舍五入为整数 - 尽管API接受双精度。

甚至在增量字段中不输入任何内容,并使用NSStepper子类调用setIncrement:所有实例将其设置为例如init上的0.1失败,因为IB显然仍然将增量设置为0或调用init后的某些内容。

不确定它是如何做到的,因为子类中的setIncrement:覆盖未被调用...

1 个答案:

答案 0 :(得分:1)

如果你有很多NSStepper与标准的NSStepper只有增量,那么你可以尝试继承initWithCoder:并覆盖initWithCoder:,这是调用时的初始值从nib文件重新创建一个对象。

我倾向于将initWithFrame:super一起视为指定的初始化程序,但文档在这方面并不含糊。无论如何,如果你在设置自己的属性之前调用initWithFrame:,它应该工作并且健壮。如果您执行此类操作,您还可以考虑重写increment来执行相同的初始化,因此您可以通过不同的方式获得一致的行为来实例化子类。

这种方法的缺点是您无法在Interface Builder中为自定义子类设置{{1}},因此您可能希望将其记录在后面。