- (void)start
{
_time = 60;
__block CountdownButton *blockSelf = self;
if (_timer) {
_timer = nil;
}
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
self.enabled = NO;
blockSelf->_timer=[NSTimer scheduledTimerWithTimeInterval:1.0
target:blockSelf
selector:@selector(timeAction:)
userInfo:nil
repeats:YES] ;
[[NSRunLoop currentRunLoop] addTimer:blockSelf->_timer forMode:NSDefaultRunLoopMode];
[[NSRunLoop currentRunLoop] run];
});
}
- (void)timeAction:(NSTimer *)timer
{
--_time ;
NSString *timeStr = [NSString stringWithFormat:@"%d 秒后重发",_time];
[self setTitle:timeStr forState:UIControlStateDisabled];
if (_time == 0) {
[self stop];
}
}
- (void)stop
{
[_timer invalidate];
_timer = nil;
_time = 60;
self.enabled = YES;
[self setTitle:@"获取短信验证码" forState:UIControlStateNormal];
}
倒计时按钮实现
本文介绍了一种使用Objective-C实现的倒计时按钮功能,该功能通过NSTimer定时器进行计时更新,并在达到指定时间后禁用按钮,直至倒计时结束。文章详细展示了如何初始化计时、设置定时器、更新UI以及停止计时的过程。
2万+

被折叠的 条评论
为什么被折叠?



