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

来源:互联网 发布:sp张坤淘宝店 编辑:程序博客网 时间:2024/05/04 18:27

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

根视图控制器的代码不说了,主要的代码在
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
这里写图片描述

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

0 0
原创粉丝点击