转到UISlider的拍摄位置

时间:2016-01-05 16:41:42

标签: ios swift uislider uitapgesturerecognizer

我有一个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)

}

但是,它不会让我在滑块上的任何地方获得挖掘的值。它只能让我握住拇指并滑动它,但不能轻拍。

2 个答案:

答案 0 :(得分:1)

错误是合法的。如果检查Float的操作数,您将看到几个可能的调用序列。你可能想要的那个期望CGFloat(而不是animation:) - 但也需要一个let floatNewValue = Float(newValue) durationSlider.setValue(floatNewValue,animated: true) 布尔标志。

尝试类似:

{{1}}

答案 1 :(得分:0)

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

您需要将CGFloat转换为Float。

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