Objective c 如何连续获取NSSlider的值?

Objective c 如何连续获取NSSlider的值?,objective-c,cocoa,macos,nsslider,Objective C,Cocoa,Macos,Nsslider,Cocoa中的NSSlider似乎没有提供一个委托来接收为UISlider更改的类似事件的值 例如,如何连续获取NSSlider的值并将其显示在NSTextField中?您需要研究。这是一个你需要理解的基本概念。滑块(和任何其他控件)可以指定一个目标(某个控制器对象)和一个操作(针对该控制器对象调用的方法) 默认情况下,当用户停止拖动时将触发该操作在Interface Builder中检查滑块的Continuous属性,使其在滑动时触发动作。使用计时器方法的一个优点是,它适用于使用键盘而不是鼠标

Cocoa中的
NSSlider
似乎没有提供一个委托来接收为
UISlider
更改的类似事件的值

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

您需要研究。这是一个你需要理解的基本概念。滑块(和任何其他控件)可以指定一个目标(某个控制器对象)和一个操作(针对该控制器对象调用的方法)


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

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


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

基于以下内容的编程解决方案:

Swift

slider.isContinuous = true
目标-C

slider.continuous = YES;

检查NSSlider的连续属性完全有效,谢谢@爱管闲事的
连续的
房产就是我要找的。非常感谢。我希望有一种方法可以为
连续
值提供单独的操作方法,在它们放开滑块之后。@CliftonLabrum您可以在现有操作函数中使用
NSApplication.currentEvent
来检查
事件.type
掩码是否存在
NSEvent.EventType.leftMouseDragged
和在此基础上区分您的行为。如果因阻力而调用,则为“连续”调整;如果不是的话,那是一次直接点击或鼠标在滑块的最终位置松开了它。@CliftonLabrum当然是一种方法,尽管它让我对非主队列事件同步感到紧张。如果不知道更多,就不可能说你是否应该期待麻烦,但这是需要评估和记住的。