2016-01-05 31 views
0

我有一个UISlider,我试图在用户点击某个时间而不是移动拇指时转移位置。转到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) 

} 

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

回答

0

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

您需要将您的CGFloat强制转换为浮点型。

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

+0

它去掉了错误,但在攻不改变滑块的值。如果我握住拇指并滑动,它只会移动滑块。你有什么主意吗?编辑:刚刚更新了问题 – senty

1

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

尝试类似:

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

是的,这解决了这个问题。我刚刚更新了这个问题。这并不能帮助我实现我想实现的目标 – senty