发送验证码时设置UIButton的倒计时

该博客详细介绍了如何在iOS应用中实现发送验证码功能时,为UIButton添加倒计时效果。通过创建并配置dispatch_source_t定时器,每秒更新按钮标题显示剩余时间,并在倒计时结束后恢复按钮的初始状态,允许用户再次点击获取验证码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

#pragma mark

-(void)getYZMAction: (id)sender{

    ToastTool *tool = [ToastToolshareToastTool];

    tool.message = @"验证码已发送!";

    [tool show];


        __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(), ^{

                    //设置界面的按钮显示根据自己需求设置

                    [getButtonsetTitle:@"发送验证码"forState:UIControlStateNormal];

                    getButton.userInteractionEnabled =YES;//设置button可点击

                });

            }else{

                //int minutes = timeout / 60;

                int seconds = timeout % 60;

                NSString *strTime = [NSStringstringWithFormat:@"%.2d", seconds];

                dispatch_async(dispatch_get_main_queue(), ^{

                    //设置界面的按钮显示根据自己需求设置

                    NSLog(@"____%@",strTime);

                    [getButtonsetTitle:[NSStringstringWithFormat:@"剩余%@",strTime]forState:UIControlStateNormal];

                    getButton.userInteractionEnabled =NO;//设置button不可点击

                    //do what you are want

                    

                    

                });

                timeout--;

                

            }

        });

        dispatch_resume(_timer);

        

    //}


    

}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值