基于NSTimer的倒计时

作者: iHTCboy | 来源:发表于2015-04-17 15:12 被阅读1349次

    今天做手机短信验证码的功能,不用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,如若转载,请注明来源。

    相关文章

      网友评论

        本文标题:基于NSTimer的倒计时

        本文链接:https://www.haomeiwen.com/subject/krjefttx.html