iphone - 如何以编程方式暂停 NSTimer?

标签 iphone objective-c cocoa-touch

我正在使用 NSTimer 在基于 OpenGL 的 iPhone 应用程序中进行一些渲染。我有一个弹出并请求用户输入的模式对话框。当用户提供输入时,我想“暂停”,例如:

[myNSTimer pause];

我使用这种语法是因为我一直在做这样的事情:

[myNSTimer invalidate];

当我希望它停止时。

如何以编程方式暂停 NSTimer?

最佳答案

只是想更新对 kapesoftware 答案的小修复:

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];
}

关于iphone - 如何以编程方式暂停 NSTimer?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/347219/

相关文章:

ios - UITableViewCell + 自动布局 + RTL

objective-c - 在 textFieldShouldReturn 之后调用方法

ios - 检测小部件上任意位置的点击?

iphone - 是什么导致了这个 iPhone 崩溃日志?

iPhone.如何在检测到声音时开始录音,检测到静音时停止录音

iphone - 如何使用 CaptiveNetwork 获取当前的 WiFi 热点名称

ios - presentViewController :animated:completion: does not animate View Controller into view

iphone - 用于 sleep /唤醒解锁的 ios 应用程序?

ios - initWithCoder : and initWithFrame: 之间共享初始化方法的命名约定

objective-c - 许多文件的自动音频水印