Ios 如何以编程方式调用UISlider';s.valueChanged事件

Ios 如何以编程方式调用UISlider';s.valueChanged事件,ios,swift,uislider,Ios,Swift,Uislider,当我实际触摸并拖动滑块时,其.valueChanged事件工作正常: slider.addTarget(self, action: #selector(sliderValueChanged(sender:)), for: .valueChanged @objc func sliderValueChanged(sender: UISlider) { print(sender.value) } 我有另一个移动的视图,就像地图上的汽车。当汽车水平移动时,返回一个值,该值使滑块实际移动,这也

当我实际触摸并拖动滑块时,其
.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
}

只需调用您的
操作
选择器:

func carTraveled(distance: Double) {

    slider.value = Float(distance)
    sliderValueChanged(sender: slider)
}
或者,如果滑块有许多目标动作对,或者您不知道该时间点的
动作
选择器方法,则可以执行以下操作:

啊,我忘了这件事。我总是把它用在按钮上,但我从来没有把它用在其他任何东西上。好主意谢谢
func carTraveled(distance: Double) {

    slider.value = Float(distance)
    slider.sendActions(for: .valueChanged)
}