UISliderをタップで選択可能にするには
iOS12より前
class MySlider: UISlider {
override func beginTracking(_ touch: UITouch, with event: UIEvent?) -> Bool {
return true
}
}
しかしiOS12以降だとSliderの値が変わらない
iOS12以降
class MySlider: UISlider {
override func beginTracking(_ touch: UITouch, with event: UIEvent?) -> Bool {
let tapPoint = touch.location(in: self)
let fraction = Float(tapPoint.x / bounds.width)
let newValue = (maximumValue - minimumValue) * fraction + minimumValue
if newValue != value {
value = newValue
}
return true
}
}
これでiOS12以降でもタップで選択可能になり、.valueChanged
イベントも送ってくれます