2011-07-15 46 views
18

我想創建一個「秒錶」類型的功能。我有一個標籤(顯示已用時間)和兩個按鈕(啓動和停止計時器)。開始和停止按鈕分別調用startTimerstopTimer函數。定時器每秒鐘觸發並調用increaseTimerCount函數。我也有一個ivar timerCount,持續時間以秒爲單位。創建一個iOS計時器

- (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所調用時重新初始化定時器)。有什麼方法可以暫停並恢復計時器,而不會使其失效並重新創建它?或者做一個更好的/替代的方式?

謝謝。

回答

9

如果不使用invalidate,則無法暫停計時器。你可以做的是添加

[timer fire]; 

startTimer中創建計時器後。

11

有點過時,但如果有人仍有意...

沒有「停止」的計時器,但停止暫停期間遞增,如

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

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