【问题标题】:How to detect when user finished moving Range slider in Swift如何检测用户何时在 Swift 中完成移动 Range 滑块
【发布时间】:2016-12-29 16:27:24
【问题描述】:

我在我的项目中使用Range sliderHow use it.

我想检测,当用户完成移动范围滑块。 我尝试使用函数SliderAction(sender: RangeSlider),但我得到了滑块中的每个移动点。我想我需要使用这个功能:func endTrackingWithTouch(touch: UITouch?, withEvent event: UIEvent?),但它不起作用。 我怎样才能做到?

【问题讨论】:

标签: ios swift slider uicontrol rangeslider


【解决方案1】:

基于此示例viewcontroller,您应该检查值sender.selectedMax 更改的值是否应该等于您在情节提要中为该滑块视图设置的值

【讨论】:

    【解决方案2】:

    要检测用户何时完成移动范围滑块,您可以向滑块添加一个 controlevent,您可以通过编程方式添加它:

    mySlider.addTarget(self, action: "sliderDidEndSliding:", forControlEvents: .UIControlEventTouchUpInside)
    

    那么你必须按照接收方法来做你的逻辑。

        func sliderDidEndSliding(sender: UISlider) {
    }
    

    【讨论】:

      【解决方案3】:

      您需要覆盖 endTrackingWithTouch。它会在底层机制结束跟踪时调用,让您有机会做出响应。

      请务必在您的 endTrackingWithTouch 版本中调用 this 的 super,以便父类可以发挥作用。

      【讨论】:

        【解决方案4】:

        对于 swift 3,我使用了这个:

        mySlider.addTarget(self, action: #selector(self.sliderDidEndSliding), for: .touchUpInside) 
        
        func sliderDidEndSliding() {
          // process stuff 
        }
        

        读取值通过以下方式完成:

        @IBAction func mySlider(_ sender: Any) {
        
        }
        

        【讨论】:

          【解决方案5】:

          斯威夫特 4

          slider.addTarget(self, action: #selector(sliderDidEndSliding), for: .touchUpInside)
          

          并添加

          @objc func sliderDidEndSliding(sender: UISlider) {
          }
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2015-08-15
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多