GCD实现验证码倒计时

 1 - (void)viewDidLoad {
 2     [super viewDidLoad];
 3    [_timeButton addTarget:self action:@selector(startTime) forControlEvents:UIControlEventTouchUpInside];
 4 }
 5 -(void)startTime{
 6     __block int timeout=30; //倒计时时间
 7     dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
 8     dispatch_source_t _timer = dispatch_source_create(DISPATCH_SOURCE_TYPE_TIMER, 0, 0,queue);
 9     dispatch_source_set_timer(_timer,dispatch_walltime(NULL, 0),1.0*NSEC_PER_SEC, 0); //每秒执行
10     dispatch_source_set_event_handler(_timer, ^{
11         if(timeout<=0){ //倒计时结束,关闭
12             dispatch_source_cancel(_timer);
13             dispatch_async(dispatch_get_main_queue(), ^{
14                 //设置界面的按钮显示 根据自己需求设置
15                 [_timeButton setTitle:@"发送验证码" forState:UIControlStateNormal];
16                 _timeButton.userInteractionEnabled = YES;
17             });
18         }else{
19             int seconds = timeout % 60;
20             NSString *strTime = [NSString stringWithFormat:@"%.2d", seconds];
21             dispatch_async(dispatch_get_main_queue(), ^{
22                 //设置界面的按钮显示 根据自己需求设置
23                 //NSLog(@"____%@",strTime);
24                 [UIView beginAnimations:nil context:nil];
25                 [UIView setAnimationDuration:1];
26                 [_timeButton setTitle:[NSString stringWithFormat:@"%@秒后重新发送",strTime] forState:UIControlStateNormal];
27                 [UIView commitAnimations];
28                 _timeButton.userInteractionEnabled = NO;
29             });
30             timeout--;
31         }
32     });
33     dispatch_resume(_timer);
34 }
时间: 2024-08-08 09:21:47

GCD实现验证码倒计时的相关文章

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

Android开发:验证码倒计时功能实现

前言 现在好多个APP里面都有验证码倒计时按钮,实现方式大概有下面几种: 1.使用线程和Handler的方式,定时刷新倒计时数字,这种方式容易导致内存泄露,所以一般都使用弱引用,控制数字的刷新. 2.自定义倒计时按钮 3.使用Android提供的CountDownTimer结合TextView实现倒计时功能 这篇主要就是说下用第三种方式实现,简单好用 效果图 实现 以下是核心代码: /** * Created by hfs on 2017/5/9. */ public class TimeCou

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

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

Andorid实现点击获取验证码倒计时效果

这篇文章主要介绍了Andorid实现点击获取验证码倒计时效果,这种效果大家经常遇到,想知道如何实现的,请阅读本文 我们在开发中经常用到倒计时的功能,比如发送验证码后,倒计时60s再进行验证码的获取,为了方便以后使用,这里做个记录,讲讲倒计时器的实现. 1.先进行倒计时工具类的封装 1 public class CountDownTimerUtils extends CountDownTimer { 2 private TextView mTextView; 3 4 /** 5 * @param

js验证码倒计时

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>验证码的倒计时</title> <style type="text/css"> *{ margin: 0; padding: 0} #btn{ background: #fff; border-radius: 20%; tex

60秒验证码倒计时js代码 js样式代码 方块上下左右随机移动(定时器) js中获取元素的方法 js中表单提交

60秒验证码倒计时js代码 <script type="text/javascript"> var countdown=60; function settime(val) { if (countdown == 0) { //removeAttribute() 方法删除指定的属性. disabled属性规定应该禁用 input 元素. val.removeAttribute("disabled"); val.value="免费获取验证码"

iOS 短信验证码倒计时按钮的实现

验证码倒计时按钮的应用是非常普遍的,本文介绍了IOS实现验证码倒计时功能,点击获取验证码,进入时间倒计时,感兴趣的小伙伴们可以参考一下: 实现思路: 创建按钮,添加点击方法: 用NSTimer定时器,每秒执行一次,定时改变Button的title,改变Button的样式,设置Button不可点击: 若倒计时结束,定时器关闭,并改变Button的样式,可以点击: 代码如下: 在按钮的点击事件里调用该方法      -(void)openCountdown{ __block NSInteger ti

【Android】验证码倒计时(Service完成,页面切换不中断)

[Android]验证码倒计时(Service完成,页面切换不中断) Service+CountDownTimer+Handler完成倒计时功能,页面切换不中断. 下载地址:http://www.devstore.cn/code/info/598.html

短信验证码倒计时

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="yan.aspx.cs" Inherits="Technology.yan" %> <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"><head runat="server&