how to pause and resume NSTimer in iphone

前端 未结 7 1633
逝去的感伤
逝去的感伤 2020-12-06 11:07

hello I am developing small gameApp. I need to pause the timer,when user goes to another view [say settings view]. when user comes back to that view , I need to resume the

7条回答
  •  暖寄归人
    2020-12-06 11:45

    NSTimer does not give you the ability to pause it. However, with a few simple variables, you can create the effect yourself:

    NSTimer *timer;
    double timerInterval = 10.0;
    double timerElapsed = 0.0;
    NSDate *timerStarted;
    
    -(void) startTimer {
      timer = [NSTimer scheduledTimerWithTimeInterval:(timerInterval - timerElapsed) target:self selector:@selector(fired) userInfo:nil repeats:NO];
      timerStarted = [NSDate date];
    }
    
    -(void) fired {
      [timer invalidate];
      timer = nil;
      timerElapsed = 0.0;
      [self startTimer];
      // react to timer event here
    }
    
    -(void) pauseTimer {
      [timer invalidate];
      timer = nil;
      timerElapsed = [[NSDate date] timeIntervalSinceDate:timerStarted];
    }
    

    This has been working out quite well for me.

提交回复
热议问题