0

是否有人有解决方法来使用NSStepper增量设置为 0.1 的控件(实际上是很多......)或除整数值之外的任何其他值setIncrement:,而无需调用每个NSStepper实例?

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

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

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

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

4

1 回答 1

1

如果您有很多NSSteppers 与标准的 s 仅在增量上有所不同,那么您可以尝试子类化NSStepper并覆盖initWithCoder:它,这是从 nib 文件重新创建对象时调用的初始化程序。

我倾向于将initWithCoder:指定的初始化程序与 一起考虑initWithFrame:,但文档在这方面并不太含糊。无论如何,如果您super在设置自己的属性之前调用它,它应该可以工作并且很健壮。如果您使用这种技巧,您还可以考虑重写initWithFrame:以进行相同的初始化,这样您就可以在不同的方法中获得一致的行为来实例化子类。

这种方法的缺点是您将无法increment在 Interface Builder 中为您的自定义子类设置,因此您可能希望很好地记录它以备后用。

于 2013-02-04T09:23:48.133 回答