文档章节

获取手机验证码倒计时实现

别情花如依丶
 别情花如依丶
发布于 2016/11/15 13:55
字数 224
阅读 13
收藏 0
点赞 0
评论 0

实现思路:

  • 创建按钮, 添加点击方法;
  • 用NSTimer定时器, 每秒执行一次, 定时改变Button的title,改变Button的样式, 设置Button不可点击;
  • 若倒计时结束, 定时器关闭, 并改变Button的样式, 可以点击;

代码如下:

在按钮的点击事件里调用该方法.

- (void)getCodeAction:(UIButton*)sender{
    //设置倒计时时间,单位为秒
    __block NSInteger time = 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(time <= 0){ //倒计时结束,关闭
            dispatch_source_cancel(_timer);
            dispatch_async(dispatch_get_main_queue(), ^{
                //设置按钮的样式
                [sender setTitle:@"重新发送" forState:UIControlStateNormal];
                [sender setTitleColor:[UIColor colorWithHex:0xFB8557 alpha:1] forState:UIControlStateNormal];
                sender.userInteractionEnabled = YES;
            });
            
        }else{
            
            int seconds = time % 61;
            dispatch_async(dispatch_get_main_queue(), ^{
                
                //设置按钮显示读秒效果
                [sender setTitle:[NSString stringWithFormat:@"重新发送(%.2d)", seconds] forState:UIControlStateNormal];
                sender.userInteractionEnabled = NO;
            });
            time--;
        }
    });
    dispatch_resume(_timer);
    
}

 

 

© 著作权归作者所有

共有 人打赏支持
别情花如依丶

别情花如依丶

粉丝 4
博文 78
码字总数 20405
作品 6
程序员
点击按钮 倒计时60秒方可再次点击发送的Js代码

本节内容: Javascript 实现 点击按钮 倒计时60秒方可再次点击发送的效果。 比如,一些网站上的手机短信认证的功能,有类似实现点击按钮后,倒计时60秒才能再次点击发送的效果。 本文用Javas...

Carl_ ⋅ 2014/08/06 ⋅ 0

Android开发之短信验证码示例

在说Android中的短信验证码这个知识点前,我们首先来了解下聚合数据 聚合数据介绍 聚合数据是一家国内最大的基础数据API提供商,专业从事互联网数据服务。免费提供从天气查询、空气质量、地图...

流浪冇 ⋅ 2016/09/28 ⋅ 2

Spring MVC短信验证码的实现

在外部网站中短信的验证很有必要,比如在实现注册、验证用户信息等的情况下。在SpringMVC中的实现如下: 短信接口 短信接口,有些企业会购买的有移动的短信平台接口。如果是个人或者是小企业...

beibugulf ⋅ 2016/09/30 ⋅ 0

js实现发送短信验证码后的倒计时功能(无视页面刷新,页面关闭不进行倒计时功能)

与我上个博客写的有点相似 <!doctype html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="Generator" content="EditPlus®"> <meta name="Author" content=""> <meta name="......

熊大熊二 ⋅ 2016/09/02 ⋅ 0

手机获取验证码倒计时

ajax 发送验证码之后,调用函数,倒计时。 实际执行的时候,倒计时不出现。。。 $.ajax({ var time=60;var code=$(this);if (validCode) {validCode=false;code.addClass("msgs1");var t=set...

刘家安 ⋅ 2015/12/30 ⋅ 1

发送验证码倒计时

// 验证码 60秒倒计时 #define TIMEENDSECOND 60 定义全局变量: NSInteger seconds; -(void)setGetchecktitle { [self.getCodeBtn setTitle:@"获取验证码" forState:UIControlStateNormal];......

飞翔我的梦想 ⋅ 2015/10/26 ⋅ 0

短信获取按钮倒计时

发送短信成功后需要倒计时一段时间才能够再次发送,在此记录一个比较好的实现方法,如有什么问题欢迎指正. 1.申明一个全局定时器timer dispatchsourcet _timer; 2.加载页面时候读取存储的时间...

toowhite ⋅ 2017/11/16 ⋅ 0

发送短信倒计时

发送短信倒计时 方式一: $("#regCodeBtn").on("click",function(){ bus.getRegCode(); }); window.bus = function () { var pub = { getRegCode: function(){ $(".hd-title").text(authcou......

hebinteng ⋅ 2017/10/19 ⋅ 0

微信小程序短信倒计时60秒提醒功能实现

背景 我们是西安卫生局平台项目,给陕西健康卡完成移动App开发后,进军小程序开发 问题 迁移到登陆验证码获取,需要有倒计时功能,app使用到setTimeout ,出问题了?!死活递归调用不了 耗时...

沫沫金 ⋅ 昨天 ⋅ 0

iOS 倒计时按钮--JKCountDownButton

JKCountDownButton,子类化UIButton实现IOS倒计时按钮,常常用于注册等发送验证码的时候进行倒计时操作。

孔小菜 ⋅ 2015/03/12 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

Spring Cloud构建微服务架构服务注册与发现

Spring Cloud简介 Spring Cloud是一个基于Spring Boot实现的云应用开发工具,它为基于JVM的云应用开发中涉及的配置管理、服务发现、断路器、智能路由、微代理、控制总线、全局锁、决策竞选、...

明理萝 ⋅ 28分钟前 ⋅ 0

占位slot

一、为什么我们需要slot 假如我们有个需要,子组件中需要显示一段html内容,显示什么不是由子组件决定,而是由父组件传递什么决定,我们该怎么做 很挫的做法,我们使用组件间的数据传递 父组...

金于虎 ⋅ 29分钟前 ⋅ 0

Linux集群 NTP 时间同步

基于CentOS 7 规划 比如有2台机器 IP 主机名 说明 192.168.103.51 cdh51 本地NTP服务端 192.168.103.52 cdh52 本地NTP客户端 安装NTP服务 每台机器都安装ntp yum -y install ntp NTP服务端(...

囚兔 ⋅ 31分钟前 ⋅ 0

国际版链克口袋 获取方法

1 月16日,网心科技玩客云团队在官网发布了停止链克口袋转帐服务的通知。通知中表示迅雷将于1月25日在AppStore和官网,正式发布链克口袋新版本,新版本不支持迅雷及迅雷合作伙伴开发的应用场...

xiaogg ⋅ 32分钟前 ⋅ 0

Raft中Batching和pipelining到底是什么?

Raft supports batching and pipelining of log entries, and both are important for best performance. Many of the costs of request processing are amortized when multiple requests a......

黑客画家 ⋅ 33分钟前 ⋅ 0

Mybatis-Plus 之BaseMapper 方法详解

/** * Mapper 继承该接口后,无需编写 mapper.xml 文件,即可获得CRUD功能 * 这个 Mapper 支持 id 泛型 * @author hubin * @Date 2016-01-23 */public interface BaseMapper<T> ...

干干 ⋅ 33分钟前 ⋅ 0

JVM笔记9-Class类文件结构

摘要: 1.Class类文件结构   Class 文件是一组以 8 位字节为基础单位的二进制流,各个数据项目严格按照顺序紧凑地排列在 Class 文件之中,中间没有添加任何分隔符,这使得整个 Class 文件中...

传授知识的天使 ⋅ 37分钟前 ⋅ 0

MySQL数据库之sleep线程过长如何处理?

  什么是sleep线程?   sleep线程长时间保持可客户端与服务端的连接状态   导致sleep过多的原因:   使用太多持久连接(高并发系统中 不适合使用持久连接)   程序中 没有及时关闭MyS...

老男孩Linux培训 ⋅ 37分钟前 ⋅ 0

转发和重定向的区别

转发在服务器端完成的;重定向是在客户端完成的 转发的速度快;重定向速度慢 转发的是同一次请求;重定向是两次不同请求 转发不会执行转发后的代码;重定向会执行重定向之后的代码 转发地址栏...

冯莉莉莉莉 ⋅ 38分钟前 ⋅ 0

go语言实现http proxy的关键一步

go语言自带包ReverseProxy 实现了proxy的功能。 但我希望proxy进程能够在代理的同时,完整的把请求和请求体记录在日志里。 仅使用ReverseProxy 包的话,uri记录没问题,但body只能被读取一次...

xuanzilie ⋅ 43分钟前 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部