我正在尝试创建一个“秒表”类型的功能。我有一个标签(用来显示经过的时间)和两个按钮(启动和停止计时器)。start和stop按钮分别调用startTimer
和stopTimer
函数。计时器每秒触发并调用increaseTimerCount
函数。我还有一个依瓦尔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];
}
问题是,当按下start按钮时,似乎会有延迟(我假设这是由于每次调用startTimer时重新初始化计时器)。有没有办法只暂停和恢复计时器而不使其无效并重新创建它?或者是一种更好的/替代的方式呢?
谢谢。
发布于 2011-07-16 02:10:22
您不能在不使用invalidate
的情况下暂停计时器。您可以做的是添加
[timer fire];
在startTimer
中创建计时器之后。
发布于 2012-07-22 10:43:46
有点过时了,但如果有人还感兴趣的话...
不要“停止”计时器,而是在暂停时停止递增。
- (void)increaseTimerCount
{
if (!self.paused){
timerCount++
}
timerCountLabel.text = [NSString stringWithFormat:@"%d", timerCount];
}
https://stackoverflow.com/questions/6711328
复制相似问题