现在我们做实际开发的时候,当用户进行注册,支付,修改密码等操作的时候,经常会遇到通过短信获取验证码,为了防止用户频繁的操作按钮,需要对按钮做(60)或者(90)秒的倒计时设置.要实现这样的功能,我们一般使用NSTimer定时器来做倒计时,下面我们来看具体的实现过程.
首先,设置一个简单的页面
然后设置一个定时器:
//定义变量
int seconds = 60;
NSTimer *timer;
//倒计时方法验证码实现倒计时60秒,60秒后按钮变换开始的样子
-(void)timerGetVerifyCodeMethod:(NSTimer *)theTimer {
if (seconds == 1) {
[theTimer invalidate];
seconds = 60;
[_showBtn setEnabled:YES];
[_showBtn setBackgroundColor:[UIColor redColor]];
[_showBtn setTitle:@"获取验证码" forState:UIControlStateNormal];
[_showBtn setTitleColor:[UIColor blackColor] forState:UIControlStateNormal];
[_showBtn.layer setBorderWidth:0.5];
}else{
seconds--;
NSString *title = [NSString stringWithFormat:@"重新发送(%d)",seconds];
[_showBtn setTitle:title forState:UIControlStateNormal];
[_showBtn setEnabled:NO];
[_showBtn setBackgroundColor:[UIColor grayColor]];
[_showBtn setTitleColor:[UIColor blackColor] forState:UIControlStateNormal];
}
}
最后,在按钮点击事件中,调用定时器:
- (IBAction)doAlertViewShow:(UIButton *)sender {
// seconds = 60;
timer = [NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(timerGetVerifyCodeMethod:) userInfo:nil repeats:YES];
}
这样就可以完成一个简单的按钮定时器功能了.实现效果如下: