IOS-41-NSTimer定时器的使用

本文详细介绍了如何在iOS应用中实现短信验证码倒计时功能,并展示了如何在UITextField中切换密码输入的明文显示与密文显示。通过NSTimer定时器的使用,实现了验证码发送倒计时的动态更新。同时,文章还涉及到密码安全性的讨论,包括密码输入时的明文与密文切换,以增强用户体验和安全性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

今天做了一个“获取短信验证码”倒计时效果的按钮,应用了NSTimer,顺便也看一下UITextField中密码明文与密文的设置。看效果:
这里写图片描述

定时器实现代码:

@interface TLDForgetPwdViewController ()
{
    int     timeNumber;   //验证码发送倒计时
    NSTimer *countTimer;  //定时器
}

- (void)viewDidLoad {
    [super viewDidLoad];

    _pwdText.secureTextEntry = YES; //初始化密码为密文,NO则为明文

    [self makeUI];
}

//获取短信验证码
- (IBAction)gainCodeClick {//xib里面的button

    [self makeTimer];
}

-(void)makeTimer
{
    [countTimer invalidate];
    countTimer = nil;

    timeNumber = 60;

    _gainCodeBtn.userInteractionEnabled = NO;
    //设置定时器
    countTimer = [NSTimer scheduledTimerWithTimeInterval:1 target:self selector:@selector(changeGainCodeBtnUI) userInfo:nil repeats:YES];
    //将定时器放入线程池
    [[NSRunLoop currentRunLoop]addTimer:countTimer forMode:NSDefaultRunLoopMode];
}

//改变button样式
-(void)changeGainCodeBtnUI
{
    if (timeNumber > 0) {
        timeNumber = timeNumber - 1;
        [_gainCodeBtn setBackgroundColor:[TLDFrameworkConfig shareInstance].appStyleColor];
        _gainCodeBtn.titleLabel.text = [NSString stringWithFormat:@"重新发送(%d)",timeNumber];//解决ios7之后的闪动问题
        [_gainCodeBtn setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal];
        [_gainCodeBtn setTitle:[NSString stringWithFormat:@"重新发送(%d)",timeNumber] forState:UIControlStateNormal];
    } else{
        timeNumber = 60;
        [countTimer invalidate];
        countTimer = nil;

        _gainCodeBtn.userInteractionEnabled=YES;
        [_gainCodeBtn setTitleColor:[TLDFrameworkConfig shareInstance].appStyleColor forState:UIControlStateNormal];
        [_gainCodeBtn setTitle:@"获取验证码" forState:UIControlStateNormal];
        [_gainCodeBtn setBackgroundColor:[UIColor whiteColor]];
    }

}

//一定要记得释放,否则会内存增加导致溢出
-(void)dealloc{
    if (countTimer) { //释放定时器
        [countTimer invalidate];
        countTimer = 0;
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

IOT_Elon

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值