我正在尝试创建一个"秒表"类型的功能。我有一个标签(显示经过的时间(和两个按钮(启动和停止计时器(。启动和停止按钮分别调用startTimer
和stopTimer
功能。计时器每隔一秒钟就会触发并调用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时都会重新初始化计时器(。有没有什么方法可以暂停并恢复计时器,而不使其无效并重新创建它?还是一种更好/替代的方式?
谢谢。
有点过时,但如果有人仍然感兴趣。。。
不要"停止"计时器,而是在暂停期间停止递增,例如
- (void)increaseTimerCount
{
if (!self.paused){
timerCount++
}
timerCountLabel.text = [NSString stringWithFormat:@"%d", timerCount];
}
如果不使用invalidate
,就无法暂停计时器。你能做的就是添加
[timer fire];
在startTimer
中创建计时器之后。