Я пытаюсь найти решение в Swift 4, как предложил Диого в Нажмите на UISlider, чтобы установить значение - на наборе программ UISlider, определенных программно, но я не могу сослаться на инсайдера UISlider на Selector.
В viewDidLoad () с 'ползунком', определенным как любой UISlider в коллекции UISlider, работающих внутри оператора For ...:
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)
}
Кроме того, «слайдер» добавляется в подпредставление в разделе «ViewView »- это должно быть целью taprecogniser?
При распечатке «ползунка» в консоли указывается, что «ползунок» не инициализирован. Есть мысли о том, как с этим бороться?