如何以编程方式调用 UISlider 的 .valueChanged 事件
How to programmatically call UISlider's .valueChanged event
当我触摸并拖动滑块时,它的 .valueChanged
事件正常工作:
slider.addTarget(self, action: #selector(sliderValueChanged(sender:)), for: .valueChanged
@objc func sliderValueChanged(sender: UISlider) {
print(sender.value)
}
我有另一个移动的视图,就像地图上的汽车。当汽车水平移动时,返回一个值,该值使滑块物理移动,这也能正常工作。但是因为我没有实际拖动滑块,所以它的 .valueChanged
不会被调用。
如何在不触摸滑块时以编程方式调用事件?
func carTraveled(distance: Double) {
slider.value = Float(distance) // slider does move but event is never called
}
只需调用您的 action
选择器:
func carTraveled(distance: Double) {
slider.value = Float(distance)
sliderValueChanged(sender: slider)
}
或者,如果滑块有很多目标动作对,或者您当时不知道 action
选择器方法,您可以 sendActions(for:)
:
func carTraveled(distance: Double) {
slider.value = Float(distance)
slider.sendActions(for: .valueChanged)
}
当我触摸并拖动滑块时,它的 .valueChanged
事件正常工作:
slider.addTarget(self, action: #selector(sliderValueChanged(sender:)), for: .valueChanged
@objc func sliderValueChanged(sender: UISlider) {
print(sender.value)
}
我有另一个移动的视图,就像地图上的汽车。当汽车水平移动时,返回一个值,该值使滑块物理移动,这也能正常工作。但是因为我没有实际拖动滑块,所以它的 .valueChanged
不会被调用。
如何在不触摸滑块时以编程方式调用事件?
func carTraveled(distance: Double) {
slider.value = Float(distance) // slider does move but event is never called
}
只需调用您的 action
选择器:
func carTraveled(distance: Double) {
slider.value = Float(distance)
sliderValueChanged(sender: slider)
}
或者,如果滑块有很多目标动作对,或者您当时不知道 action
选择器方法,您可以 sendActions(for:)
:
func carTraveled(distance: Double) {
slider.value = Float(distance)
slider.sendActions(for: .valueChanged)
}