创建iOS计时器

v0i*_*ess 18 objective-c nstimer

我正在尝试创建一个"秒表"类型的功能.我有一个标签(显示已用时间)和两个按钮(启动和停止计时器).启动和停止按钮分别调用startTimerstopTimer功能.计时器每秒触发并调用该increaseTimerCount函数.我也有一个ivar timerCount,它以秒为单位保持经过的时间.

- (void)increaseTimerCount
{
    timerCountLabel.text = [NSString stringWithFormat:@"%d", timerCount++];
}

- (IBAction)startTimer
{
    timer = [NSTimer scheduledTimerWithTimeInterval:1 target:self selector:@selector(increaseTimerCount) userInfo:nil repeats:YES];

}

- (IBAction)stopTimer
{
    [timer invalidate];
    [timer release];
}
Run Code Online (Sandbox Code Playgroud)

问题是按下开始按钮似乎有一个延迟(我假设这是由于每次调用startTimer时重新初始化计时器).有没有办法只是暂停和恢复计时器而不会使它失效并重新创建它?或更好/替代的方式这样做?

谢谢.

小智 11

有点过时,但如果有人仍然感兴趣...

不要"停止"计时器,而是在暂停期间停止递增,例如

- (void)increaseTimerCount
{
   if (!self.paused){
      timerCount++
   }

   timerCountLabel.text = [NSString stringWithFormat:@"%d", timerCount];
}
Run Code Online (Sandbox Code Playgroud)


Dee*_*olu 9

您不能在不使用的情况下暂停计时器invalidate.你可以做的是添加

[timer fire];
Run Code Online (Sandbox Code Playgroud)

在您创建计时器后startTimer.