当发生双击事件时,我想将UISlider
旋钮的移到中间,或者在我的情况下,将0.0
的值移到中间。
双击可将旋钮移至0.0
,但立即恢复到原来的位置/值。
我试过下面的代码。任何帮助将非常感激。
override func viewDidLoad() {
super.viewDidLoad()
let eqSlider = UISlider(frame:CGRectMake(0, 0, 160, 40))
eqSlider.minimumValue = -12.0
eqSlider.maximumValue = 12.0
eqSlider.value = 0.0
self.view.addSubview(eqSlider)
// detecting double tap on slider method
eqSlider.addTarget(self, action: #selector(EQViewController.doubleTappedSlider(_:event:)), forControlEvents: .TouchDownRepeat)
}
func doubleTappedSlider(sender: UISlider, event: UIEvent) {
if let firstTouchObj = event.allTouches()?.first {
if 2 == firstTouchObj.tapCount {
sender.value = 0.0
}
}
}
最佳答案
问题在于,双击器中的两个敲击也会由滑块本身作用,因此,在您手动设置其位置之后,用户会直接向后设置它。
为了避免这种情况,可以在设置.value
之后添加以下行:
sender.cancelTracking(with: nil)
如the documentation中所述,这将“取消任何正在进行的跟踪”。
关于ios - 双击同时将UISlider旋钮移到中间,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41118036/