2011-07-15 15 views
18

"ストップウォッチ"タイプの機能を作成しようとしています。私は1つのラベル(経過時間を表示する)と2つのボタン(タイマーの開始と停止)を持っています。スタートボタンとストップボタンはそれぞれstartTimerstopTimer関数を呼び出します。毎秒タイマーが起動し、increaseTimerCount関数が呼び出されます。私はまた、経過時間を秒単位で保持する鉢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を使用せずにタイマーを一時停止することはできません。あなたにできることは、あなたがstartTimerでタイマーを作成した後

[timer fire]; 

を追加することです。

11

例えば、日付誰かがまだ関心がある場合...

タイマーを「停止」が、一時停止中にインクリメントを停止しないビット

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

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