获取验证码的定时器

来源:互联网 发布:天猫美工和淘宝美工 编辑:程序博客网 时间:2024/05/21 10:45
-(void)verificationCode:(void(^)())blockYes blockNo:(void(^)(idtime))blockNo {
   __blockinttimeout=59;//倒计时时间
   
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(), ^{
               
//设置界面的按钮显示根据自己需求设置
                blockYes();
            });
        }
else{
           
//int minutes = timeout / 60;
           
int seconds = timeout %60;
           
           
NSString *strTime = [NSStringstringWithFormat:@"%.2d", seconds];
           
dispatch_async(dispatch_get_main_queue(), ^{
               
//设置界面的按钮显示根据自己需求设置
               
//NSLog(@"____%@",strTime);
                blockNo(strTime);
               
            });
           
if([[[NSUserDefaultsstandardUserDefaults]objectForKey:@"StopTime"]isEqualToString:@"YES"]){
                timeout =
1;
            }
            timeout--;
        }
    });
   
dispatch_resume(_timer);
}


定时器使用的时候调用的方法:
[selfverificationCode:^{
       //倒计时结束的时候执行的语句
                }blockNo:^(idtime) {
       //计时过程中执行的地方。time就是倒计时的数值
                }]; 
1 0