获取验证码的定时器

-( void )verificationCode:( void (^)())blockYes blockNo:( void (^)( id time))blockNo {
    __block int timeout= 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 = [ NSString stringWithFormat : @"%.2d" , seconds];
           
dispatch_async ( dispatch_get_main_queue (), ^{
               
// 设置界面的按钮显示 根据自己需求设置
               
//NSLog(@"____%@",strTime);
                blockNo(strTime);
               
            });
           
if ([[[ NSUserDefaults standardUserDefaults ] objectForKey : @"StopTime" ] isEqualToString : @"YES" ]){
                timeout =
1 ;
            }
            timeout--;
        }
    });
   
dispatch_resume (_timer);
}


定时器使用的时候调用的方法:
[ self verificationCode :^{
        //倒计时结束的时候执行的语句
                } blockNo:^(id time) {
        //计时过程中执行的地方。time就是倒计时的数值
                }]; 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值