// 添加定时器
-(void)addTimer{
self.timer = [NSTimer timerWithTimeInterval:1 target:self selector:@selector(countDown) userInfo:nil repeats:YES];
}
// 倒计时操作
-(void)countDown{
self.count = self.count - 1 ;
NSString *title = [NSString stringWithFormat:@"%ds",self.count];
[self.getBVertifyBtn setTitle:title forState:UIControlStateNormal];
// 此处条件如果设为== 可能会导致计时为负数
if (self.count <= 0) {
self.getBVertifyBtn.enabled = YES;
[self.timer setFireDate:[NSDate distantFuture]];
[self.getBVertifyBtn setTitle:@"获取验证码" forState:UIControlStateNormal];
}
}
// 定时器的销毁
-(void)dealloc{
if ([self.timer isValid]) {
[self.timer invalidate];
}
self.timer = nil ;
}
点击按钮获取验证码
// 设置倒计时起始值
self.count = 60 ;
[[NSRunLoop currentRunLoop] addTimer:self.timer forMode:NSDefaultRunLoopMode];
[self.timer setFireDate:[NSDate distantPast]];
self.getBVertifyBtn.enabled = NO ;
// 请求服务器下发验证码到用户
// 请求成功 && 下发验证码成功(不做任何操作)
// 请求失败 或者 获取验证码失败
[self.timer setFireDate:[NSDate distantFuture]];
self.getBVertifyBtn.enabled = YES ;
[self.getBVertifyBtn setTitle:@"获取验证码" forState:UIControlStateNormal];
注意:如果获取验证码的按钮是通过sb 或xib 创建的要 设置按钮的类型为custem
否则 切换数字时会有闪烁的效果
网友评论