How can I programmatically pause an NSTimer?

前端 未结 15 1792
梦毁少年i
梦毁少年i 2020-11-27 13:06

I\'m using an NSTimer to do some rendering in an OpenGL based iPhone app. I have a modal dialog box that pops up and requests user input. While the user is providing input

15条回答
  •  青春惊慌失措
    2020-11-27 13:26

    Just thought of updating minor fixes to kapesoftware's answer:

    NSDate *pauseStart, *previousFireDate;
    
    -(void) pauseTimer:(NSTimer *)timer { 
    
        pauseStart = [[NSDate dateWithTimeIntervalSinceNow:0] retain];
    
        previousFireDate = [[timer fireDate] retain];
    
        [timer setFireDate:[NSDate distantFuture]];
    }
    
    -(void) resumeTimer:(NSTimer *)timer {
    
        float pauseTime = -1*[pauseStart timeIntervalSinceNow];
    
        [timer setFireDate:[previousFireDate initWithTimeInterval:pauseTime sinceDate:previousFireDate]];
    
        [pauseStart release];
    
        [previousFireDate release];
    }
    

提交回复
热议问题