NStimer(计时器)实现按钮的发送验证码的一个小demo

原创 2015年11月17日 23:07:18

工程文件:
这里写图片描述

根视图控制器的代码不说了,主要的代码在
RootViewController.m中:

#import "RootViewController.h"

@interface RootViewController ()
//  直接赋值的不需要在dealloc中释放
//  将计数器的初始值设置成属性方便调用
@property (nonatomic,assign)NSInteger number;

@end

@implementation RootViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view.

    UIButton *btn = [UIButton buttonWithType:UIButtonTypeCustom];
    //  设置按钮的相关属性
    btn.frame = CGRectMake(100, 100, 150, 50);
    btn.backgroundColor = [UIColor orangeColor];
    [btn setTitle:@"请输入验证码" forState:UIControlStateNormal];
    //  可以设置成属性或者tag值,这里使用tag值方法
    btn.tag = 1000;
    //  添加方法
    [btn addTarget:self action:@selector(btnClick:) forControlEvents:UIControlEventTouchUpInside];


    //  添加到视图
    [self.view addSubview:btn];
    //  释放  方法创建不需要手动释放

    //  初始化计数器的值
    self.number = 5;

}

//  实现按钮点击方法
- (void)btnClick:(UIButton *)btn
{
    // 创建一个计数器 自动到0 之后重新发送
    // 此处的repeats属性只有YES时,才能实现自动计数
    NSTimer *timer = [NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(timerAction:) userInfo:@"button倒计时提示" repeats:YES];
    //  计时器开始
    [timer fire];

    //  必须关闭交互,不然每次点击都会产生一个计数器
    btn.userInteractionEnabled = NO;

}

- (void)timerAction:(NSTimer *)timer
{
    //  取出点击的Button
    UIButton *btn = (UIButton *)[self.view viewWithTag:1000];
    //  如果计数器的值为0时,显示为重新发送验证码
    //  判断计时器是否结束 就是他标题为0
    if ([[btn titleForState:UIControlStateNormal] isEqualToString:@"0"]) {
        //  计时器停止
        [timer invalidate];
        //  交互打开
        btn.userInteractionEnabled = YES;
        //  更改标题
        [btn setTitle:@"重新发送验证码" forState:UIControlStateNormal];
        //  重置计数器的值
        self.number = 5;
    }else{
        [btn setTitle:[NSString stringWithFormat:@"%ld",self.number--] forState:UIControlStateNormal];
    }
}

- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}



@end

三维图
window->根视图->button
这里写图片描述

* 效果图*
这里写图片描述
这里写图片描述
这里写图片描述

iOS 验证码 小技术之 UIButton NSTimer 计时器

iOS 验证码 小技术之 NSTimer 计时器 UIButton

计时器发送验证码(倒计时实现)

建立验证码按钮 //发送验证码按钮 _sentCodeBtn = [[UIButton alloc] initWithFrame:CGRectMake(kScreenWidth ...

用Cookie来实现计时器(发送手机验证码、邮箱)

当我们在一个网站上注册时,要根据手机号码来获取验证码,而验证码中包括一个时间计数器。我们用普通的Js时间时间计数时就会出现当我们刷新页面的时候验证码计数器部消失了。所以这里我们想到了用Js来操作Coo...

iOS-计时器发送验证码

效果图如下: 定义一个发送验证码的按钮,添加点击事件 //发送验证码按钮 _sentCodeBtn = [[UIButton alloc] initWithFrame:CGRectM...

Android 验证码计时器 简单实现

需求实现发送验证码功能,发送之后倒计时60s之后可以重新发送。 实现xml布局文件 ...
  • ffengz
  • ffengz
  • 2017年05月16日 19:01
  • 366

使用rxjava2实现验证码重新发送按钮的倒计时

主要是为了把休眠和倒计时放到子线程中,同时只能在主线程修改button的文字等信息。 代码中resendbtn就是要在上面显示倒计时的按钮,second是倒计时秒数,执行过程在执行子线程中的倒计时之...

NSTimer实现的小计时器

  • 2015年11月07日 14:47
  • 671KB
  • 下载

44.使用Service、BroadcastReceiver、CountDownTimer完成页面销毁不重新计时的验证码计时器

使用Service、BroadcastReceiver、CountDownTimer完成页面销毁不重新计时的验证码计时器...

iOS 计时器-验证码相关

计时器-验证码相关(以忘记密码为例) 1.点击发送验证码,要判断phoneTF是否空白以及手机号码是否正确,两个条件满足,next 2.点击发送验证码,开始进行倒计时 随机生成验证码...

Android发送验证码的倒计时按钮

  • 2015年08月10日 17:11
  • 3.38MB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:NStimer(计时器)实现按钮的发送验证码的一个小demo
举报原因:
原因补充:

(最多只允许输入30个字)