如何连续获得NSSlider的价值?

时间:2011-07-01 21:12:13

标签: objective-c cocoa macos nsslider

似乎Cocoa中的NSSlider没有提供委托来接收UISlider的值更改等事件。

如何连续获取NSSlider的值并将其显示在NSTextField中?

3 个答案:

答案 0 :(得分:44)

您需要研究Cocoa's Target/Action mechanism。这是您需要了解的基本Cocoa概念。滑块(和任何其他控件)可以被赋予目标(某个控制器对象)和动作(调用该控制器对象的方法)。

默认情况下,用户停止拖动时会触发操作。 检查滑块在Interface Builder中的连续属性,使其在您滑动时触发操作。

答案 1 :(得分:1)

使用计时器方法的一个优点是,它适用于使用键盘而不是鼠标来调整滑块的情况。如果用户在“系统偏好设置”中启用了“全键盘访问”,则可以使用Tab键为滑块提供焦点。然后,他们可以按住箭头键,以使自动重复生效,这时您将出现与鼠标拖动类似的情况:目标/动作反复触发,并且您需要等待片刻才能保存到数据库。

您需要注意不要过早删除NSTimer。例如,如果用户在这几秒钟内退出了应用程序,则可能要在终止过程之前将滑块值“刷新”到数据库中。

答案 2 :(得分:0)

基于the answer of Joshua Nozzi的程序化解决方案:

快速

slider.isContinuous = true

Objective-C

slider.continuous = YES;