UISwitch
理论上,只用当用户点击了UISwitch,才会触发,vauleChange 的action方法
但是实际开发中,发现iOS10机型上,如果在action方法里调用了-setOn:animated:
或者setOn:
,就会多触发一次action方法。
解决方案
- 避免在valueChange方法里调用
-setOn:animated:
或setOn:
- 如果无法避免,使用
dispatch_async
,在主队列执行这些方法(这个方法有个缺点,比较卡的手机会看到闪动的现象)
- (IBAction)valueChanged:(id)sender {
...
dispatch_async(dispatch_get_main_queue(), ^{
[sender setOn:YES];
});
...
}
3.iOS 10 以下机型不会出现这个问题,iOS11 待验证