【问题标题】:Creating an iOS Timer创建 iOS 计时器
【发布时间】:2011-07-15 18:05:25
【问题描述】:

我正在尝试创建“秒表”类型的功能。我有一个标签(显示经过的时间)和两个按钮(启动和停止计时器)。开始和停止按钮分别调用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 时都重新初始化计时器)。有什么方法可以暂停和恢复计时器而不使其无效并重新创建它?还是更好/替代的方法?

谢谢。

【问题讨论】:

    标签: objective-c nstimer


    【解决方案1】:

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

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

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

    【讨论】:

      【解决方案2】:

      如果不使用invalidate,您将无法暂停计时器。你可以做的是添加

      [timer fire];
      

      startTimer 中创建计时器之后。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-07-10
        • 1970-01-01
        • 1970-01-01
        • 2015-11-13
        • 1970-01-01
        • 2021-05-26
        • 2011-02-17
        相关资源
        最近更新 更多