美文网首页
iOS 获取验证码倒计时方法

iOS 获取验证码倒计时方法

作者: 龍飝 | 来源:发表于2018-09-05 10:05 被阅读94次

    import <UIKit/UIKit.h>

    @interface UIButton (YasinTimerCategory)

    • (void)startCountDownTime:(int)time withCountDownBlock:(void(^)(void))countDownBlock;

    @end

    import "UIButton+YasinTimerCategory.h"

    static NSString *yasinTempText;

    @implementation UIButton (YasinTimerCategory)

    • (void)startCountDownTime:(int)time withCountDownBlock:(void(^)(void))countDownBlock{

      [self initButtonData];

      [self startTime:time];

      if (countDownBlock) {
      countDownBlock();
      }
      }

    • (void)initButtonData{

      yasinTempText = [NSString stringWithFormat:@"%@",self.titleLabel.text];

    }

    • (void)startTime:(int)time{

      __block int timeout = time;

      dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);

      dispatch_source_t _timer = dispatch_source_create(DISPATCH_SOURCE_TYPE_TIMER, 0, 0,queue);

      dispatch_source_set_timer(_timer,dispatch_walltime(NULL, 0),1.0 * NSEC_PER_SEC, 0);

      dispatch_source_set_event_handler(_timer, ^{

        //倒计时结束
        if(timeout <= 0){
            
            dispatch_source_cancel(_timer);
            
            dispatch_async(dispatch_get_main_queue(), ^{
                
                [self setTitle:yasinTempText forState:UIControlStateNormal];
                self.userInteractionEnabled = YES;
                
            });
            
        }else{
            
            dispatch_async(dispatch_get_main_queue(), ^{
                
                NSString *text = [NSString stringWithFormat:@"%02d秒重新获取",timeout];
                [self setTitle:text forState:UIControlStateNormal];
                self.userInteractionEnabled = NO;
                
            });
            
            timeout --;
            
        }
      

      });

      dispatch_resume(_timer);

    }

    @end

    调用方法
    [self.verificationBtn startCountDownTime:60 withCountDownBlock:^{

            NSLog(@"开始倒计时");
            
            
            
        }];
    

    相关文章

      网友评论

          本文标题:iOS 获取验证码倒计时方法

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