创建iOS计时器

时间:2011-07-15 18:05:25

标签: 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];
}

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

感谢。

2 个答案:

答案 0 :(得分:11)

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

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

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

   timerCountLabel.text = [NSString stringWithFormat:@"%d", timerCount];
}

答案 1 :(得分:9)

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

[timer fire];
startTimer

中创建计时器后