无论滑块移动的速度有多快,如何读取UISlider的每个值?

时间:2016-09-13 15:28:53

标签: swift uislider

我需要阅读UISlider的每个值。当我在调试区域中打印滑块的值时,您会看到以慢速中速移动滑块时每个值都会增加1。

Slider values at slow-medium pace

然而,当我快速移动滑块时,值会大幅跳跃,如下所示:

Slider values at fast pace

无论如何,无论移动的速度如何,我都能读取滑块的每一步的值吗? (最好是迅速)

代码:

@IBAction func didMoveFeedbackSlider(sender: UISlider) {

    let currentValue = sender.value
    var currentValueInt = Int(ceil(currentValue))

    print("slider value: \(currentValueInt)")

}

1 个答案:

答案 0 :(得分:6)

好的,如果您想要遵循您的算法,这是一个可能的解决方案

var value:Int = 0
func readSliderValue(val:Int) {
    while(value != val) {
        value = value + (val < value ? -1 : 1) // or use +=
        print(value)
    }
}

但是 可能Matt是对的,问题出在设计和/或算法中。

为什么值不是连续的:滑块用鼠标/手指位置表示滑块的实际值。当您在视频/ gif上快速移动手指时,扫描手指位置/手势的内部过程比手指慢。因此,在手指位置的内部算法的两次检查之间,它(您的手指)越过滑块的多个位置。所以滑块的想法并不是向你展示你的手指是如何到达那里的,而是现在的位置。所以滑块工作正常,从创作者的角度来看:)