是否有人有解决方法,可以使用将增量设置为0.1的NSStepper
控件(实际上很多是..)或除整数值外不对每个setIncrement:
实例调用NSStepper
的其他方法?
我有一个类似于编辑器的UI,它要求步进器以很小的增量来更改其实例所附加的附件NSTextField
的值。
尽管API接受双精度,但在Interface Builder(IB)中将增量设置为十进制值会使它将其舍入为整数。
即使在增量字段中不输入任何内容,并使用NSStepper
子类对所有实例调用setIncrement:
并将其设置为例如在init
上的0.1失败,因为IB显然仍将增量设置为0或在调用init
之后的值。
不过,由于子类中的setIncrement:
覆盖没有被调用,因此不知道它是如何做到的。
最佳答案
如果您有很多NSStepper
与标准值仅相差一个增量,那么您可以尝试对NSStepper
进行子类化并覆盖initWithCoder:
,这是从笔尖重新创建对象时调用的初始化程序文件。
我倾向于将initWithCoder:
与initWithFrame:
一起指定为指定的初始化程序,但是这些文档在这方面不太模糊。无论如何,如果您在设置自己的属性之前调用super
,它应该可以正常工作并且功能强大。如果您做这种技巧,您还可以考虑重写initWithFrame:
进行相同的初始化,因此可以在实例化子类的不同方法中获得一致的行为。
这种方法的缺点是,您将无法在Interface Builder中为您的自定义子类设置increment
,因此您可能希望对其进行正确记录以确保后验。
关于cocoa - NSStepper带十进制值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14662833/