iOS中NSTimer 中断并重新开始计时

项目中需要点击一个名词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];
}

你可能感兴趣的:(iOS中NSTimer 中断并重新开始计时)