我已经创建了一个滑块,让我可以控制Mac上的亮度。我正在尝试确保滑块准确地表示当前的亮度级别。如果我通过键盘更改亮度,我希望滑块反映新的级别。
现在,滑块将向我显示当前的亮度级别,但仅在我单击滑块之后。此外,我不能改变滑块的亮度。
@IBAction func brightnessSlider(sender: NSSlider) {
verticalSlider.floatValue = getBrightnessLevel()
setBrightnessLevel(sender.floatValue)
}
如果我去掉试图获得亮度的线条,我可以通过滑块调整亮度级别,但它总是在开始时达到最大亮度。
如何让滑块既可调又能始终反映亮度级别?
此外,如果有帮助,可以使用here's a link访问完整的源代码。
编辑:当我用下面的代码点击菜单时,我可以让滑块显示正确的亮度,但当它打开时,它仍然不会更新。此外,在关闭时更新似乎不是一个好主意。
NSTimer.scheduledTimerWithTimeInterval(0.2, target: self, selector: Selector("updateBrightnessSlider"), userInfo: nil, repeats: true)
发布于 2015-12-18 06:25:19
添加NSRunLoop.currentRunLoop().addTimer(timer, forMode: NSRunLoopCommonModes)
似乎是可行的。因此,完整的代码片段如下:
let timer = NSTimer.scheduledTimerWithTimeInterval(0.1, target: self, selector: Selector("updateBrightnessSlider"), userInfo: nil, repeats: true)
NSRunLoop.currentRunLoop().addTimer(timer, forMode: NSRunLoopCommonModes)
func updateBrightnessSlider() {
verticalSlider.floatValue = getBrightnessLevel()
}
https://stackoverflow.com/questions/34323214
复制