2011-11-11 12 views
0

これはiPhoneのストップウオッチアプリのコードです。スタートボタンを押すと正しいフォーマットでカウントアップされ、すべて正常に動作し、停止ボタンとリセットが行われます。問題は、私が停止した後、再び新しいタイマーを作成し、最後のタイマーから継続しないようにするたびに発生します。一時停止を作成して現在の時刻から続けることはできますか?NSTimer iPhoneは現在時刻から再開します

おかげ

NSDate *startDate; 
NSTimer *stopWatchTimer; 


-(void)showActivity { 

    NSDate *currentDate = [NSDate date]; 
    NSTimeInterval timeInterval = [currentDate timeIntervalSinceDate:startDate]; 
    NSDate *timerDate = [NSDate dateWithTimeIntervalSince1970:timeInterval]; 
    NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; 
    [dateFormatter setDateFormat:@"mm:ss.SS"]; 
    [dateFormatter setTimeZone:[NSTimeZone timeZoneForSecondsFromGMT:0.0]]; 
    NSString *timeString=[dateFormatter stringFromDate:timerDate]; 
    stopWatchLabel.text = timeString; 
    [dateFormatter release]; 
} 

- (IBAction)onStartPressed:(id)sender { 
    startDate = [[NSDate date]retain]; 
    stopWatchTimer = [NSTimer scheduledTimerWithTimeInterval:1/10 target:self selector:@selector(showActivity) userInfo:nil repeats:YES]; 
} 

- (IBAction)onStopPressed:(id)sender { 
    [stopWatchTimer invalidate]; 
    stopWatchTimer = nil; 
    [self showActivity]; 
} 

- (IBAction)reset:(id)sender; { 
    stopWatchLabel.text = @"00:00.00"; 
} 

答えて

0

開始のたびにstartDateを設定しないでください。ちょうど最初、リセット後。ブール状態変数は追跡を助けることができます。

1

が一時停止中に、あなたはおそらくこれまでにIVARに時間間隔を維持したい

accumulatedInterval = [CURRENTDATE timeIntervalSinceDate:たstartDate];

とtimeIntervalに常に追加します。

関連する問題