25

在 Cocoa 中似乎NSSlider没有提供一个委托来接收像 Value Changed 这样的事件UISlider

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

4

3 回答 3

48

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

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

于 2011-07-01T21:59:32.850 回答
2

使用计时器方法的一个优点是它适用于使用键盘而不是鼠标来调整滑块的情况。如果用户在“系统偏好设置”中打开了“全键盘访问”,他们可以使用 Tab 键为滑块提供焦点。然后他们可以按住箭头键以启动自动重复,此时您的情况与使用鼠标拖动类似:目标/动作重复触发,您希望在保存到数据库之前等待片刻平静。

您确实需要小心不要过早删除您的 NSTimer。例如,如果用户在这几秒钟内退出应用程序,您可能希望在终止进程之前将滑块值“刷新”到数据库中。

于 2018-08-31T02:29:37.800 回答
1

基于Joshua Nozzi 答案的编程解决方案:

迅速

slider.isContinuous = true

Objective-C

slider.continuous = YES;
于 2019-04-04T18:34:03.637 回答