使用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];
}
这样就可以完成一个简单的按钮定时器功能了.实现效果如下:
首先,设置一个简单的页面
然后设置一个定时器:
//定义变量
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];
}
这样就可以完成一个简单的按钮定时器功能了.实现效果如下:
相关文章推荐
- Spring ListFactoryBean example
- Android Camera数据流完整分析
- ZOJ 3347 Picture Handling
- MFC COMBOBOX的使用
- tomcat6 开启GZIP
- LINUX-文件字符集问题总结
- Java 异步同时写多个文件,写完之后通知子线程
- AsyncTask介绍
- Hadoop DistributedCache的使用解释
- quagga实现 isis路由(2)
- 离线语音听写
- mfc 打开指定文档
- BZOJ1050
- codeforces 66D D. Petya and His Friends( 数论+构造)
- 离线语音听写
- ****CentOS下安装JDK1.7
- hdu1284-钱币兑换问题(简单dp)
- Android HandlerThread 完全解析
- 对于引用实现接口的类的对象
- zoj 3885 The Exchange of Items 最小费用最大流