转到 UISlider 的点击位置
Posted
技术标签:
【中文标题】转到 UISlider 的点击位置【英文标题】:Go to tapped position of UISlider 【发布时间】:2016-01-05 16:41:42 【问题描述】:我有一个UISlider
,我试图在用户点击某个时间时使位置移动,而不是移动拇指。
我尝试通过this topic 和this 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)
但是,它不会让我在滑块上的任何位置获得点击值。它只能让我握住拇指并滑动它,但不能轻敲。
【问题讨论】:
【参考方案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)
【讨论】:
它消除了错误,但在点击时不会改变滑块的值。如果我握住拇指并滑动,它只会移动滑块。你有什么主意吗?编辑:刚刚更新了问题以上是关于转到 UISlider 的点击位置的主要内容,如果未能解决你的问题,请参考以下文章