如何检测用户何时在 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) {
}
我用这个是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) {
}