UISwitch
理論上,只用當(dāng)用戶點(diǎn)擊了UISwitch,才會(huì)觸發(fā),vauleChange 的action方法
但是實(shí)際開發(fā)中,發(fā)現(xiàn)iOS10機(jī)型上,如果在action方法里調(diào)用了-setOn:animated:
或者setOn:
,就會(huì)多觸發(fā)一次action方法。
解決方案
- 避免在valueChange方法里調(diào)用
-setOn:animated:
或setOn:
- 如果無法避免,使用
dispatch_async
,在主隊(duì)列執(zhí)行這些方法(這個(gè)方法有個(gè)缺點(diǎn),比較卡的手機(jī)會(huì)看到閃動(dòng)的現(xiàn)象)
- (IBAction)valueChanged:(id)sender {
...
dispatch_async(dispatch_get_main_queue(), ^{
[sender setOn:YES];
});
...
}
3.iOS 10 以下機(jī)型不會(huì)出現(xiàn)這個(gè)問題,iOS11 待驗(yàn)證