文档章节

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

别情花如依丶
 别情花如依丶
发布于 2016/11/15 13:55
字数 224
阅读 14
收藏 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);
    
}

 

 

© 著作权归作者所有

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

别情花如依丶

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

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

Carl_
2014/08/06
0
0
Spring MVC短信验证码的实现

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

beibugulf
2016/09/30
1K
0
Android开发之短信验证码示例

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

流浪冇
2016/09/28
1K
2
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
196
0
手机获取验证码倒计时

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

刘家安
2015/12/30
361
1

没有更多内容

加载失败,请刷新页面

加载更多

发生系统错误 5 拒绝访问

1、使用命令net start *开启一个服务的时候,出现发生系统错误5,拒绝访问。 解决:切换到管理员模式执行此命令即可。

fang_faye
17分钟前
1
0
devops 成长路线

https://36kr.com/p/5157249.html

swingcoder
30分钟前
1
0
Java内存区域的划分和异常

行时数据区域 JVM在运行Java程序时候会将内存划分为若干个不同的数据区域。 程序计数器 线程私有。可看作是当前线程所执行的字节码的行号指示器,字节码解释器的工作是通过改变这个计数值来读...

架构师springboot
31分钟前
1
0
kubeadm 安装kubernetes1.12.1

准备环境 服务器 服务器情况: IP 系统版本 角色 Hostname 10.20.13.24 Centos7 64位 minimal master kuber24 10.20.13.25 Centos7 64位 minimal work Kuber25 10.20.13.26 Centos7 64位 mi......

hgfgoodcreate
34分钟前
4
0
腾讯又添 AI 开源项目! 腾讯 AI Lab 正式开源业内最大规模多标签图像数据集

2018年10月17日,腾讯AI Lab宣布正式开源“Tencent ML-Images”项目,地址为https://github.com/Tencent/tencent-ml-images。该项目由多标签图像数据集ML-Images,以及业内目前同类深度学习模...

腾讯开源
41分钟前
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部