我正在使用UISwitch调用子视图来在我的应用中进行屏幕显示。但是,交换机仅在大约60%的时间内工作。为了测试我的代码,我将交换机连接到另一个IBAction,以将交换机的状态写入控制台。两个功能在某些时间都没有响应开关的状态,即两个功能在某些时候同时忽略开关的状态。在iOS7中有没有其他人在UISwitch中遇到过这种行为?
- (IBAction)showHideSomeSubView:(UISwitch *)sender {
if (_mySwitch.on) {
[self.view addSubview:someSubView];
}
else {
[someSubVew removeFromSuperview];
}}
编辑:
相同的开关连接到以下操作:
- (IBAction)switchToggled:(UISwitch *)sender {
sender = _mySwitch;
if ([sender isOn]) {
NSLog(@"On");
} else {
NSLog(@"Off");
}}
两个动作都以相同的方式响应开关。
答案 0 :(得分:4)
我确认你的怪异行为!!!! 只需拖动开关周围的小圆圈,您将看到多次调用的动作(在我的情况下最多403:D) 我真的不确定Apple工程师打算做什么,因为我没有找到任何关于这种新行为的文件,BTW,如果你找到了,请告诉我。
非常感谢
答案 1 :(得分:3)
我在iOS 7应用程序中使用了几个UISwitch,我在回复Value Changed操作时没有遇到任何问题。交换机始终正确报告其值。您应该从IB中的操作中取消切换,然后重新连接,确保连接Value Changed操作。
答案 2 :(得分:3)
是的,使用iOS 7 iPad模拟器中的UISwitch,我看到了相当于你的switchToggled:方法的1-12回调。在最后一次回调中,该值实际上已更改。在之前的回调中,它没有。我正在做的是缓存开关是否打开。然后在switchToggled:方法中,我检查该值是否实际上已更改。如果没有,我会忽略回调。这似乎使用户的行为正确。
问题也发生在设备上,尽管显然不那么频繁。同样的解决方法似乎在那里工作。