【发布时间】:2018-05-14 21:33:13
【问题描述】:
我正在尝试 Swift 4 中的解决方案,正如 Diogo 在 Tap on UISlider to Set the Value 中所建议的那样 - 在一组以编程方式定义的 UISlider 上,但我无法在 Selector 中引用 UISlider 内部。
在 viewDidLoad() 中,'slider' 定义为在 For... 语句中运行的 UISlider 集合中的任何 UISlider:
let tapGestureRecognizer = UITapGestureRecognizer(target: self, action: #selector(sliderTapped(_: slider:)))
slider.addGestureRecognizer(tapGestureRecognizer)
选择器:
@objc func sliderTapped(_ gestureRecognizer:UIGestureRecognizer, slider:UISlider) {
let pointTapped: CGPoint = gestureRecognizer.location(in: assessView)
let positionOfSlider: CGPoint = slider.convert(slider.bounds.origin, to: assessView)
let widthOfSlider: CGFloat = slider.bounds.size.width
let moveDistance = sqrt(Double(pow(Double(pointTapped.x - positionOfSlider.x),2) + pow(Double(pointTapped.y - positionOfSlider.y),2)))
var newValue: CGFloat
if pointTapped.x < 10 {
newValue = 0
} else {
newValue = (CGFloat(moveDistance) * CGFloat(slider.maximumValue) / widthOfSlider)
}
slider.setValue(Float(newValue), animated: true)
}
另外,“slider”被添加到“assessView”下的子视图中——这应该是taprecogniser的目标吗?
在控制台中打印出“滑块”时,它指出“滑块”未初始化。关于如何处理这个问题的任何思考?
【问题讨论】:
标签: swift uislider uitapgesturerecognizer