如何检测用户何时在 Swift 中完成移动范围滑块

How to detect when user finished moving Range slider in Swift

我用这个是Range slider in my project. How use it.

我想检测用户何时完成移动范围滑块。 我尝试使用函数 SliderAction(sender: RangeSlider),但我得到了滑块中的每个移动点。我想我需要使用这个函数:func endTrackingWithTouch(touch: UITouch?, withEvent event: UIEvent?),但它不起作用。 我怎样才能做到?

基于此示例 viewcontroller,您应该检查值 sender.selectedMax 更改的值应等于您在故事板中为该滑块视图设置的值

要检测用户何时完成移动范围滑块,您可以向滑块添加一个控制事件,您可以通过编程方式添加它:

mySlider.addTarget(self, action: "sliderDidEndSliding:", forControlEvents: .UIControlEventTouchUpInside)

然后你必须按照你的逻辑接收方法。

    func sliderDidEndSliding(sender: UISlider) {
}

您需要覆盖 endTrackingWithTouch。它会在底层机器跟踪结束时被调用,让您有机会做出回应。

一定要在你的 endTrackingWithTouch 版本中调用它的 super,这样 parents 类 可以发挥作用。

对于swift 3 我使用了这个:

mySlider.addTarget(self, action: #selector(self.sliderDidEndSliding), for: .touchUpInside) 

func sliderDidEndSliding() {
  // process stuff 
}

读取值是通过以下方式完成的:

@IBAction func mySlider(_ sender: Any) {

}

Swift 4

slider.addTarget(self, action: #selector(sliderDidEndSliding), for: .touchUpInside)

并添加

@objc func sliderDidEndSliding(sender: UISlider) {
}