更新了雨燕3.0
这是一个老问题,我偶然发现同时解决增加双击识别重置滑块的几乎相同的问题。
最初的回答指出我们在正确的方向添加一个动作来响应UIControlEvents.touchDownRepeat
。
这可以迅速通过增加线在您的视图控制器(例如在viewDidLoad()
方法来完成:
override func viewDidLoad()
{
super.viewDidLoad()
self.slider.addTarget(self, action: #selector(sliderTouchDownRepeat(_ :)), for: .touchDownRepeat)
}
而且你可以在选择相应的反应:
@objc func sliderTouchDownRepeat(_ slider: UISlider)
{
//Respond to double tap here
}
这虽然如果您计划在识别出双击时更改滑块值,那么还有一些额外的代码片段是必需的。
首先,也会增加一个动作为UIControlEvents.valueChanged
override func viewDidLoad()
{
super.viewDidLoad()
self.slider.addTarget(self, action: #selector(sliderTouchDownRepeat(_ :)), for: .touchDownRepeat)
self.slider.addTarget(self, action: #selector(sliderDidChange(_:)), for: .valueChanged)
}
取消当前触及事件的,我们正在响应,使滑块时没有立即返回到双击位置slider.cancelTracking(with: nil)
,并呼吁采取行动在UIControlEvents.valueChanged
@objc func sliderTouchDownRepeat(_ slider: UISlider)
{
slider.cancelTracking(with: nil)
// Perform your own value change operation
// self.reset()
self.sliderDidChange(slider)
}
@objc func sliderDidChange(_ slider: UISlider)
{
//Update any other UI here
}
快乐编码
*凹凸*无论这是一件没有人做过/想要做的,或者它是如此简单每个人都认为我会绊倒交流罗斯吧。无论哪种方式,我仍然坚持。任何人? – Randy 2009-09-21 16:05:49