2012-12-20 144 views
3

可能重複:
How to Pause/Play NSTimer?的NSTimer暫停計時器

我有三個按鈕startstoppause ..My startstop按鈕做工精細與下面code..but時按Pause它暫停計時器..但是當再次按下start.IT繼續從新增加的時間...不是從暫停時間....

supoose我暫停以5秒的啓動,等待5秒鐘,然後按開始...它應該顯示5 ......但因爲我沒有在starttimer!=nill提到(timer:)顯示10 ..

.. 。 怎麼會被添加..

我有問題:

  1. Pause不工作。
-(void)start:(NSTimer *)timer 
{ 
    if(_timer==nil) 
    { 
    startDate =[NSDate date]; 

    _timer=[NSTimer scheduledTimerWithTimeInterval:0.25 target:self selector:@selector(timer:) userInfo:nil repeats:YES]; 
    } 

    if(_timer!=nil) 
    { 
    float pauseTime = -1*[pauseStart timeIntervalSinceNow]; 

    [_timer setFireDate:[previousFireDate initWithTimeInterval:pauseTime sinceDate:previousFireDate]]; 
    } 

} 

-(void)timer:(NSTimer *)timer 
{ 
    NSInteger secondsSinceStart = (NSInteger)[[NSDate date] timeIntervalSinceDate:startDate]; 

    NSInteger seconds = secondsSinceStart % 60; 
    NSInteger minutes = (secondsSinceStart/60) % 60; 
    NSInteger hours = secondsSinceStart/(60 * 60); 
    NSString *result = nil; 
    if (hours > 0) 
    { 
    result = [NSString stringWithFormat:@"%02d:%02d:%02d", hours, minutes, seconds]; 
    } 
    else 
    { 
    result = [NSString stringWithFormat:@"%02d:%02d", minutes, seconds];   
    } 

    label.text=result; 

    NSLog(@"time interval -> %@",result); 
} 

-(void)stop 
{ 
    if(_timer!=nil) 
    { 
    startDate=nil; 

    [_timer invalidate]; 
    _timer = nil; 
    } 
} 

-(void)pause:(NSTimer *)timer 
{ 
    pauseStart = [NSDate dateWithTimeIntervalSinceNow:0]; 

    previousFireDate = [_timer fireDate]; 

    [_timer setFireDate:[NSDate distantFuture]]; 
} 
+2

訪問此http://stackoverflow.com/questions/9975562/how-to-pause-play-nstimer –

回答

1
-(void)pause:(NSTimer *)timer 
{ 
    pauseStart = [NSDate dateWithTimeIntervalSinceNow:0]; 

    previousFireDate = [_timer fireDate]; 

    //[timer setFireDate:[NSDate distantFuture]]; 
    [_timer setFireDate:[NSDate distantFuture]]; 
} 
+0

雅這個作品......這'pause'的timer..but當我再次開始' '它不會從暫停開始......它繼續在背後計數......並顯示更新的時間不是暫停時間 – Christien

+0

假設我在5秒鐘暫停並等待5秒然後按開始..它顯示我10秒沒有5 ... – Christien

+0

這是現在剩下的唯一問題 – Christien

0

這裏是我用於計時器的代碼:

我存儲所有的部件的時間,在我的(單)類,小時,分鐘,秒的值。

而且,我簡單地使「暫停」方法中的計時器「無效」,並且存儲這些值。

看,如果這有幫助。

-(void) startTimer 
{ 
    NSLog(@"Values for timer: %d H, %d M, %d S", self.hours, self.minutes, self.seconds); 

    _timer = [NSTimer scheduledTimerWithTimeInterval:1.0f target:self selector:@selector(updateTimer) userInfo:nil repeats:YES]; 
} 

-(void) pauseTimer 
{ 
    if(_timer) 
    { 
     [_timer invalidate]; 
    } 

    _timer = nil; 

    self.hour = hourValue; 
    self.minute = minuteValue; 
    self.second = secondsValue; 
}