Objective c 如何连续获取NSSlider的值?
Cocoa中的Objective c 如何连续获取NSSlider的值?,objective-c,cocoa,macos,nsslider,Objective C,Cocoa,Macos,Nsslider,Cocoa中的NSSlider似乎没有提供一个委托来接收为UISlider更改的类似事件的值 例如,如何连续获取NSSlider的值并将其显示在NSTextField中?您需要研究。这是一个你需要理解的基本概念。滑块(和任何其他控件)可以指定一个目标(某个控制器对象)和一个操作(针对该控制器对象调用的方法) 默认情况下,当用户停止拖动时将触发该操作在Interface Builder中检查滑块的Continuous属性,使其在滑动时触发动作。使用计时器方法的一个优点是,它适用于使用键盘而不是鼠标
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当然是一种方法,尽管它让我对非主队列事件同步感到紧张。如果不知道更多,就不可能说你是否应该期待麻烦,但这是需要评估和记住的。