当发生双击事件时,我想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/

10-10 22:23