发送验证码倒计时

//倒计时
-(void)startTime{
    
    //重新发送验证码
    NSDictionary *dic = @{@"mobileNumber":self.phoneNumber};
    [HttpTool1 post:GetRegVerificationCodeUrl params:dic success:^(id mydata) {
        NSLog(@"成功----");
        NSString *str = [[NSString alloc] initWithData:mydata encoding:NSUTF8StringEncoding];
        NSLog(@"%@",str);
        if([str isEqualToString:@"0001"]){
            [MBProgressHUD showError:@"发送失败"];
        }
    }
    failure:^(NSError *error) {
        NSLog(@"失败-----");
    }];

__block int timeout=60; //倒计时时间
    dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
     _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(), ^{
                //设置界面的按钮显示 根据自己需求设置
                [_againLabel setTitle:@"发送验证码" forState:UIControlStateNormal];
                _againLabel.userInteractionEnabled = YES;
                
            });
            
            }else{
            //            int minutes = timeout / 60;
            int seconds = timeout % 60;
            NSString *strTime = [NSString stringWithFormat:@"%.2d", seconds];
            dispatch_async(dispatch_get_main_queue(), ^{
                //设置界面的按钮显示 根据自己需求设置
                [_againLabel setTitle:[NSString stringWithFormat:@"重新发送(%@)",strTime] forState:UIControlStateNormal];
                _againLabel.userInteractionEnabled = NO;
                
            });
            timeout--;
            
        }
    });
   dispatch_resume(_timer);

}

时间: 2025-01-06 02:08:18

发送验证码倒计时的相关文章

js 发送验证码倒计时

<input  type="text"   name=''  id="btn"> //发送验证码倒计时var wait=30; function time(o) { if (wait == 0) { o.removeAttribute("disabled"); o.value="免费获取验证码"; wait = 30; }else{ o.setAttribute("disabled", true

react native中的聊天气泡以及timer封装成的发送验证码倒计时

今天看来情书写的文章,研究了一下大佬写的文章,自己做一点总结. 其实,今天我想把我近期遇到的坑都总结一下:1.goBack的跨页面跳转,又两种方法,一可以像兔哥那样修改navigation源码,二可以用navigationActions     2.父子组件的传值,一可以用callBack  二可以用pubsub发布订阅模式 三可以用manager事件监听(a页面要显示的内容 有两种形式,一是从manager主动接收,也就是说不需要点击什么的获取数据,而是时时监听manager里数据的变化,第二

jQuery实现的手机发送验证码倒计时效果代码分享

这是一款基于jquery实现的手机发送验证码倒计时效果代码,可实现实时显示秒数倒计时的功能,还可实现对手机号码格式验证的功能,是一款常用的网站注册发送手机验证码特效代码. 效果描述:注册一个网站,当需要发送验证码到手机上的时候,我们经常碰到这样的效果:首先检测手机是否符合1开头,11位数字的格式:若不符合,则提示错误信息并返回false:否则提交给后台,后台确定接收后返回一个值,发送按钮变为灰色并倒计时. 运行效果: 年利率高达14.4% 上海投融理财,20万起投,年化收益14.4% 房产抵押,

安卓发送验证码倒计时效果和自动获取验证码并填充到输入框

在注册,实名认证.修改手机号码的,我们都会用发送验证码的功能,在这里经常就会涉及到2个效果, 第一个:发送验证码倒计时效果: 第二个:自动获取接收到的短信,并且填充验证码. 先来说倒计时效果: 其实很简单,就是一个计时器.每秒刷新一次,倒计时完了.就可以重新点击获取了. <pre name="code" class="java">btn_getYzm.setEnabled(false); btn_getYzm.setBackgroundResource(

js实现发送验证码倒计时按钮

在写注册页面时,有时候需要发送注册邮件来获取验证码,但是为了防止多次重复发送邮件, 必须让按钮隔一段时间后才能再次使用. 代码如下: 1 <html> 2 <head> 3 <meta charset="utf-8"> 4 <title>验证码按钮</title> 5 </head> 6 <body> 7 <button type="button" id="send&

jQuery手机发送验证码倒计时代码

<!DOCTYPE> <html> <head> <meta charset="UTF-8"> <script type="text/javascript" src="http://s29.xtest.tech/res/bxdapp/js/jquery.min.js"></script> <script type="text/javascript"&

React中发送验证码 倒计时效果组件编写

(1)可以通过使用"react-timer-mixin"插件实现倒计时效果,原理同下面的思路一样此处不在详细解说 (2)自己用原生定时器方法实现 1 import React,{Component} from 'react'; 2 import {Button } from 'antd-mobile'; 3 import PropTypes from 'prop-types'; 4 class SendVerifyCode extends Component{ 5 constructo

jQuery 发送验证码倒计时按钮

{ wait:90, hsTime:function(that){ if (this.wait == 0) { $('#hsbtn').removeAttr("disabled").val('重发短信验证码'); this.wait = 90; } else { var _this = this; $(that).attr("disabled", true).val('在'+_this.wait+'秒后点此重发'); _this.wait--; setTimeout

jQuery 发送验证码倒计时按钮 复制代码

<!DOCTYPE html> <html> <head> <title></title> <script src="../scripts/jquery.js" type="text/javascript"></script> <script> $(function () { var util = { wait: 90, hsTime: function (that) {