美文网首页iOS DeveloperiOS 开发
iOS中NSTimer 中断并重新开始计时

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

作者: eversterd | 来源:发表于2016-05-04 23:07 被阅读2270次

    项目中需要点击一个名词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 中断并重新开始计时

        本文链接:https://www.haomeiwen.com/subject/cffdrttx.html