在用户注册App的时候, 一般需要获取手机验证码, 那么, 倒计时是必须的, 因此, 总结一下, 以便方便使用.
<1> 定义一个实例变量 'timer'
@property (nonatomic, strong) NSTimer *timer; //定时器
@property (nonatomic, assign) NSInteger time; //60s
<2> 在创建Button的时候, 同时设置 timer
//设置定时器
self.timer = [NSTimer scheduledTimerWithTimeInterval:1 target:self selector:@selector(countTime:) userInfo:nil repeats:YES];
[self.timer setFireDate:[NSDate distantFuture]];
<3> 当启动定时器的时候, 执行的countTime:
方法, 如下
- (void)countTime:(NSTimer *)time {
[self.getCode setTitle:[NSString stringWithFormat:@"%zds",self.time] forState:UIControlStateNormal];
self.getCode.enabled = NO;
if (self.time >= 0) {
self.time--;
} else {
[self.timer setFireDate:[NSDate distantFuture]];
[self.getCode setTitle:@"获取验证码" forState:UIControlStateNormal];
self.getCode.enabled = YES;
}
}
<4> 当输入的账号和密码正确之后, 点击, 获取验证码的 Button, 启动定时器
向后台获取验证码操作
[self startTimer]; // 同时, 开启定时器
<5> startTimer
操作
- (void)startTimer {
self.time = 59;
[self.timer setFireDate:[NSDate distantPast]];
}
<6> 最后, 需要销毁定时器
- (void)dealloc {
[self.timer invalidate];
self.timer = nil;
}