基于NSTimer的倒计时

简介: 今天做手机短信验证码的功能,不用GCD,简单的NSTimer就可以完成,不知道有没有bug,测试中。。。#pragma mark - 倒计时- (void)startCount{ /** * 添加定时器 */ self.

今天做手机短信验证码的功能,不用GCD,简单的NSTimer就可以完成,不知道有没有bug,测试中。。。


#pragma mark - 倒计时
- (void)startCount
{
    /**
     *  添加定时器
     */
    self.currentCountDown = 120;
    self.timer = [NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(countDown) userInfo:nil repeats:YES];
    [[NSRunLoop currentRunLoop] addTimer:self.timer forMode:NSRunLoopCommonModes];
    [self.timer fire];
}

- (void)countDown{
    
    if (self.currentCountDown >0) {
        //设置界面的按钮显示 根据自己需求设置
        [self.captchaBtn setTitle:[NSString stringWithFormat:@"(%ld)重新获取",(long)self.currentCountDown] forState:UIControlStateNormal];
        //self.captchaBtn.enabled = NO;
        self.currentCountDown -= 1;
    }else{
        [self removeTimer];
    }
    
}

/**
 *  移除定时器
 */
- (void)removeTimer
{
    self.currentCountDown = 0;
    [self setCaptchaEnable:YES];
    [self.timer invalidate];
    self.timer = nil;
}


//因为iOS 7下 按钮 enabled= NO, 不能设置文字
#pragma mark - 设置按钮状态
- (void)setCaptchaEnable:(BOOL)enabled{
    //可以按
    if (enabled) {
        self.captchaBtn.userInteractionEnabled = YES;
        [self.captchaBtn setBackgroundImage:[UIImage imageNamed:@"back_red"] forState:UIControlStateNormal];
        [self.captchaBtn setTitle:@"获取验证码" forState:UIControlStateNormal];
        
    }else{
        self.captchaBtn.userInteractionEnabled = NO;
        [self.captchaBtn setBackgroundImage:[UIImage imageNamed:@"back_gray"] forState:UIControlStateNormal];
    }
}

  • 如果有什么疑问,可以在评论区一起讨论;
  • 如果有什么不正确的地方,欢迎指导!


注:本文首发于 iHTCboy's blog,如若转载,请注明来源。

目录
相关文章
|
2月前
简单倒计时
简单倒计时
20 0
|
2月前
|
开发者 智能硬件
倒计时器
倒计时器
95 1
|
2月前
|
JavaScript
长按事件怎么加定时器
长按事件怎么加定时器
干货三:CountDownTimer倒计时工具类
干货三:CountDownTimer倒计时工具类
52 0
15、计时器方法1(setInterval、clearInterval)
15、计时器方法1(setInterval、clearInterval)
114 0
|
Android开发 数据格式 XML
Chronometer和CountDownTimer计时器
Android小知识10则(上)Android小知识10则(下)Android用5种方式实现自定义计时器, 哪种才是你的菜?github传送门 目录 前言 Chronometer的使用 CountDownTimer的使用 最后 前言 之前在A...
1281 0