项目中需要点击一个名词label后,出现另一个label显示名词解释。一共有6个名词label,每点一个label,名词解释需要更新,并且5秒后消失。
开始尝试使用NSTimer倒计时5秒后隐藏解释的label。出现的问题:如果在5秒内点击另一个名词label,解释的内容会更新,但是并没有重新开始5秒的计时,有时刚更新解释就消失。
没有直接搜索到中断计时重新开始的例子,但是找到了取消计时器的方法。在每一次点击方法中,将_timer停止,再重新计时,亲测正常运行。
@property (strong,nonatomic) NSTimer *timer;
-(void)labelTap:(UITapGestureRecognizer *)gesture
{
self.descLabel.hidden=NO;
//other code
if (_timer.isValid){
[_timer invalidate];
}
_timer = nil;//实际测试中,不置nil也正常运行,还是保持规范性
_timer = [NSTimer scheduledTimerWithTimeInterval:5 target:self selector:@selector(doTimer) userInfo:nil repeats:NO];
[[NSRunLoop mainRunLoop] addTimer:_timer forMode:NSDefaultRunLoopMode];
}
网友评论