【问题标题】:Go to tapped position of UISlider转到 UISlider 的点击位置
【发布时间】:2016-01-05 16:41:42
【问题描述】:

我有一个UISlider,我试图在用户点击某个时间时使位置移动,而不是移动拇指。

我尝试通过this topicthis answer 来解决这个问题,我采用了这种方法。这是我尝试过的:

var slider: UISlider! // and maxValue, etc added in viewDidLoad

func sliderTapped(gestureRecognizer: UIGestureRecognizer) {
    var pointTapped: CGPoint = gestureRecognizer.locationInView(self.view)

    var positionOfSlider: CGPoint = slider.frame.origin
    var widthOfSlider: CGFloat = slider.frame.size.width
    var newValue = ((pointTapped.x - positionOfSlider.x) * CGFloat(slider.maximumValue) / widthOfSlider)

    slider.setValue(Float(newValue), animated: true)

}

但是,它不会让我在滑块上的任何位置获得点击值。它只能让我握住拇指并滑动它,但不能轻敲。

【问题讨论】:

    标签: ios swift uislider uitapgesturerecognizer


    【解决方案1】:

    这个错误是合法的。如果您检查setValue 的操作数,您将看到几个可能的调用序列。您可能需要一个 Float(而不是 CGFloat) - 但也需要一个 animation: 布尔标志。

    尝试类似:

    let floatNewValue = Float(newValue)
    durationSlider.setValue(floatNewValue,animated: true)
    

    【讨论】:

    • 是的,这解决了问题。我刚刚更新了这个问题。这并没有帮助我实现我想要实现的目标
    【解决方案2】:

    UISlider 的方法是func setValue(_ value: Float, animated animated: Bool)

    您需要将 CGFloat 转换为 Float。

    所以durationSlider.setValue(Float(newValue), animated: true)

    【讨论】:

    • 它消除了错误,但在点击时不会改变滑块的值。如果我握住拇指并滑动,它只会移动滑块。你有什么主意吗?编辑:刚刚更新了问题
    猜你喜欢
    • 1970-01-01
    • 2016-04-09
    • 2015-03-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多