开发中我们经常会遇到,在UISwitch状态改变是做一些对应操作的事件
今天遇到一个需求,在点击UISwitch后做一次请求操作,一分钟内不能再进行第二次请求,并且在一分钟内如果操作UISwitch提示相应信息,并保持原状态。
示例
- (void)addSwitchView {
UISwitch * switchView = [[UISwitch alloc] initWithFrame:CGRectMake(100, 100, 100, 100)];
[switchView addTarget:self action:@selector(switchViewStateChange:) forControlEvents:UIControlEventValueChanged];
[self.view addSubview:switchView];
}
- (void)switchViewStateChange:(UISwitch *)switchView {
if (距上次改变状态时间差 < 60) {
[switchView setOn:!switchView.isOn animated:YES];
// 提示一分钟不能修改状态
return;
}
else {
// 其他操作
}
}
运行上边代码会发现一分钟内再次点击时设置回原状态是不起作用的
在这里我们需要给它加一个延迟
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(50 * NSEC_PER_MSEC)), dispatch_get_main_queue(), ^{
[switchView setOn:!switchView.isOn animated:YES];
});
再次运行就可以了
网友评论