「ストップウォッチ」タイプの機能を作成しようとしています。 1つのラベル(経過時間を表示する)と2つのボタン(タイマーの開始と停止)があります。開始ボタンと停止ボタンは、それぞれ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が呼び出されるたびにタイマーを再初期化するためであると想定しています)。タイマーを無効にして再作成せずに、タイマーを一時停止して再開する方法はありますか?またはこれを行うより良い/代替方法?
ありがとう。
invalidate
を使用せずにタイマーを一時停止することはできません。あなたができることは追加することです
[timer fire];
startTimer
にタイマーを作成した後。
少し時代遅れですが、誰かがまだ興味があるなら...
タイマーを「停止」するのではなく、一時停止中にインクリメントを停止します。
- (void)increaseTimerCount
{
if (!self.paused){
timerCount++
}
timerCountLabel.text = [NSString stringWithFormat:@"%d", timerCount];
}