gpt4 book ai didi

objective-c - 以编程方式更改时,UISwitch 不发送 valueChanged 事件

转载 作者:可可西里 更新时间:2023-11-01 03:30:09 24 4
gpt4 key购买 nike

我有一对通过 valueChanged 事件连接到 IBAction 的 UISwitch。触摸开关时,valueChanged 事件正常触发。但是,如果我以编程方式更改其中一个开关,它不会调用我的 IBAction。

- (IBAction)switchChanged:(UISwitch *)sender {
if (sender == self.shippingSwitch) {
if (self.shippingSwitch.on && !self.PayPalSwitch.on) {
[self.PayPalSwitch setOn:YES animated:YES];
}
}

if (sender == self.PayPalSwitch) {
if (!self.PayPalSwitch.on) {
// This is not working when the PayPal switch is set via the code above
self.PayPalEmailField.backgroundColor = [UIColor grayColor];
self.PayPalEmailField.enabled = NO;

if (self.shippingSwitch.on) {
[self.shippingSwitch setOn:NO animated:YES];
}
} else {
self.PayPalEmailField.backgroundColor = [UIColor clearColor];
self.PayPalEmailField.enabled = YES;
}
}
}

最佳答案

这是正确且需要的行为。由于您明确更改了该值,因此由您决定如何处理更改后的值。

这样做的原因是,在通过用户交互通知其值已更改后,显式更改控件的值并不少见。如果显式状态更改导致事件再次触发,您将陷入无限循环。

关于objective-c - 以编程方式更改时,UISwitch 不发送 valueChanged 事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13753742/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com