iPhone:如何检测滑块拖动的结束?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了iPhone:如何检测滑块拖动的结束?相关的知识,希望对你有一定的参考价值。

如何在用户结束拖动滑块指针时检测事件?

答案

如果你不需要拖动之间的任何数据,那么你应该简单地设置:

[mySlider setContinuous: NO];

这样,只有当用户停止移动滑块时,您才会收到valueChanged事件。

另一答案

在Swift 4中,您可以使用此功能

1第一步: - 在滑块中添加目标

self.distanceSlider.addTarget(self, action: #selector(self.sliderDidEndSliding(notification:)), for: ([.touchUpInside,.touchUpOutside]))

2第二步: - 创建一个功能

@objc func sliderDidEndSliding(notification: NSNotification)
{
   print("Hello-->(distanceSlider.value)")
}
另一答案

Swift 3.1

有时您会希望滑块的拖动事件连续触发,但可以选择执行不同的代码,具体取决于滑块是否仍在拖动或刚刚完成拖动。

要做到这一点,我已经扩展了Andy上面的答案,它利用了滑块的isTracking属性。我需要记录两个状态:sliderHasFinishedTrackingsliderLastStoredValue

我的代码正确:

  • 开始拖动时不会触发动作
  • 如果用户只用一次点击轻推滑块(意味着isTracking仍然是false),则触发动作

class SliderExample: UIViewController {
  var slider: UISlider = UISlider()
  var sliderHasFinishedTracking: Bool = true
  var sliderLastStoredValue: Float!

  override func loadView() {
    super.loadView()

    slider.minimumValue = 100.0
    slider.maximumValue = 200.0
    slider.isContinuous = true
    slider.value = 100.0
    self.sliderLastStoredValue = slider.value
    slider.addTarget(self, action: #selector(respondToSlideEvents), for: .valueChanged)
    // add your slider to the view however you like
  }

  func respondToSlideEvents(sender: UISlider) {
    let currentValue: Float = Float(sender.value)
    print("Event fired. Current value for slider: (currentValue)%.")

    if(slider.isTracking) {
      self.sliderHasFinishedTracking = false
      print("Action while the slider is being dragged ⏳")
    } else {
      if(self.sliderHasFinishedTracking && currentValue == self.sliderLastStoredValue){
        print("Slider has finished tracking and its value hasn't changed, " +
              "yet event was fired anyway. 

以上是关于iPhone:如何检测滑块拖动的结束?的主要内容,如果未能解决你的问题,请参考以下文章

iPhone:编程 UISlider 以定位在点击的位置

如何使用 SwiftUI 拖动工作滑块

wpf slider拖动滑块气泡提示

iPhone 上的 AVAudioPlayer 声音意外停止循环:如何调试?

如何通过拖动滑块来控制我的 Kivy 滚动视图?

苹果手机怎么滑动验证码