是否有人有解决方法,可以使用将增量设置为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/

10-09 19:45