倒计时获取验证码事件代码

Posted 小荷才露尖尖角1213

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了倒计时获取验证码事件代码相关的知识,希望对你有一定的参考价值。

-(void)sendSMS{
    
    if(isPhone == YES){
          isPhone = NO;
        __block int timeout=60; //倒计时时间
        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(), ^{
                    //设置界面的按钮显示
                    [smsBtn setTitle:@"获取" forState:UIControlStateNormal];
                    smsBtn.userInteractionEnabled = YES;
                });
            }else{
                int seconds = timeout % 120;
                NSString *strTime = [NSString stringWithFormat:@"%.2d", seconds];
                dispatch_async(dispatch_get_main_queue(), ^{
                    //设置界面的按钮显示
                    //NSLog(@"____%@",strTime);
                    [UIView beginAnimations:nil context:nil];
                    [UIView setAnimationDuration:1];
                    [smsBtn setTitle:[NSString stringWithFormat:@"%@",strTime] forState:UIControlStateNormal];
                    [UIView commitAnimations];
                    smsBtn.userInteractionEnabled = NO;
                });
                timeout--;
            }
        });
        dispatch_resume(_timer);
    }else{
        hud = [[MBProgressHUD alloc] initWithView:registerView];
        [registerView addSubview:hud];
        hud.mode = MBProgressHUDModeText;
        [hud setOffset:CGPointMake(0, -200.0f)];
        hud.label.text = @"手机号有误";
        [hud showAnimated:YES];
        dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
            sleep(1);
            dispatch_async(dispatch_get_main_queue(), ^{ //回到主线程
                [hud removeFromSuperview];
            });
        });
        
    }
}

以上是关于倒计时获取验证码事件代码的主要内容,如果未能解决你的问题,请参考以下文章

vue获取验证码倒计时,自定义组件点击事件不生效的问题

使用Jquery实现获取短信验证码60秒倒计时

超实用的JavaScript代码段 Item4 --发送短信验证码

jquery实现手机发送验证码的倒计时代码

获取验证码倒计时

MAC AxureRP9登录获取验证码倒计时