您的位置:首页 > 其它

使用NSTimer计时器实现简单的按钮倒计时功能

2015-08-21 14:56 429 查看
现在我们做实际开发的时候,当用户进行注册,支付,修改密码等操作的时候,经常会遇到通过短信获取验证码,为了防止用户频繁的操作按钮,需要对按钮做(60)或者(90)秒的倒计时设置.要实现这样的功能,我们一般使用NSTimer定时器来做倒计时,下面我们来看具体的实现过程.
首先,设置一个简单的页面



然后设置一个定时器:
//定义变量

int seconds = 60;
NSTimer *timer;

//倒计时方法验证码实现倒计时60秒,60秒后按钮变换开始的样子
-(void)timerGetVerifyCodeMethod:(NSTimer *)theTimer {
    
    if (seconds ==
1) {
        [theTimer invalidate];
        seconds =
60;
        [_showBtn
setEnabled:YES];
        [_showBtn
setBackgroundColor:[UIColor
redColor]];
        [_showBtn
setTitle:@"获取验证码"
forState:UIControlStateNormal];
        [_showBtn
setTitleColor:[UIColor
blackColor] forState:UIControlStateNormal];
        [_showBtn.layer
setBorderWidth:0.5];
        
    }else{
        seconds--;
        NSString *title = [NSString
stringWithFormat:@"重新发送(%d)",seconds];
        [_showBtn
setTitle:title forState:UIControlStateNormal];
        [_showBtn
setEnabled:NO];
        [_showBtn
setBackgroundColor:[UIColor
grayColor]];
        [_showBtn
setTitleColor:[UIColor
blackColor] forState:UIControlStateNormal];
    }
    
}

最后,在按钮点击事件中,调用定时器:

- (IBAction)doAlertViewShow:(UIButton *)sender {
//    seconds = 60;
    timer = [NSTimer
scheduledTimerWithTimeInterval:1.0
target:self
selector:@selector(timerGetVerifyCodeMethod:)
userInfo:nil
repeats:YES];
    
}

这样就可以完成一个简单的按钮定时器功能了.实现效果如下:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: