如何在iOS 中不触摸UISlider 的情况下触发UISlider 的UIControlEventValueChanged?

How to trigger UIControlEventValueChanged of UISlider without touch UISlider in iOS?

我已经创建了一个类似以下代码的 UISlider:

BrightnessSlider = [[UISlider alloc] initWithFrame:CGRectMake(sliderXpoint, 530, sliderwidth, 20)];
BrightnessSlider.minimumValue = 0;
BrightnessSlider.maximumValue = 100;
BrightnessSlider.value = 50;
BrightnessSlider.continuous = YES;
[BrightnessSlider addTarget:self action:@selector(BrightnessSliderValueChanged:) forControlEvents:UIControlEventValueChanged];
[BrightnessSlider addTarget:self action:@selector(BrightnessSliderTouchUpInside:) forControlEvents:UIControlEventTouchUpInside];

当我触摸 UISlider 时,它会触发以下事件。

- (void)BrightnessSliderValueChanged:(UISlider *)sender {
    BrightnessLabel.text = [NSString stringWithFormat:@"%@%.0f", NSLocalizedString(@"Brightness", @""), sender.value];
}

我想在不接触 UISlider 的情况下触发 UIControlEventValueChanged。 例如,当我将值设置为 UISlider 时,如下代码:

[BrightnessSlider setValue:(BrightnessSlider.value + 1)];

如何在不触摸 iOS 中的 UISlider 的情况下触发 UISliderUIControlEventValueChanged

您可以像这样以编程方式触发操作:

[BrightnessSlider sendActionsForControlEvents:UIControlEventValueChanged];

你可以开火

dispatch_async(dispatch_get_main_queue(), ^{
    [BrightnessSlider sendActionsForControlEvents: UIControlEventTouchUpInside];
[BrightnessSlider sendActionsForControlEvents: UIControlEventTouchUpInside];
});

关键是确保在主线程中执行。