如何暂停/播放NSTimer?

我需要启动NSTimer 0:0:0我正在做,我有点击暂停button,定时器必须暂停一段时间后,如果用户点击播放它必须从暂停的时间运行。 我怎样才能在NSTimer中暂停和播放? 任何帮助? 提前致谢。

尝试这个shizzle …对我很好

编辑

说实话,我的实际代码是这样的:

-(IBAction)clicked:(id)sender { if ([startStop.titleLabel.text isEqualToString:@"Start"]) { [startStop setTitle:@"Pause" forState:UIControlStateNormal]; [startStop setTitleColor:[UIColor redColor] forState:UIControlStateNormal]; timer = [NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(countUp) userInfo:nil repeats:YES]; timerDown = [NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(countDown) userInfo:nil repeats:YES]; } else if ([startStop.titleLabel.text isEqualToString:@"Pause"]) { [startStop setTitle:@"Resume" forState:UIControlStateNormal]; [startStop setTitleColor:[UIColor colorWithRed:0/255 green:0/255 blue:255/255 alpha:1.0] forState:UIControlStateNormal]; pauseStart = [[NSDate dateWithTimeIntervalSinceNow:0] retain]; previousFireDate = [[timer fireDate] retain]; [timer setFireDate:[NSDate distantFuture]]; } else if ([startStop.titleLabel.text isEqualToString:@"Resume"]) { [startStop setTitle:@"Pause" forState:UIControlStateNormal]; [startStop setTitleColor:[UIColor redColor] forState:UIControlStateNormal]; float pauseTime = -1*[pauseStart timeIntervalSinceNow]; [timer setFireDate:[NSDate dateWithTimeInterval:pauseTime sinceDate:previousFireDate]]; [pauseStart release]; [previousFireDate release]; } } 

我用UIButton,并单击时使用此代码。

记得把这个:

 NSDate *pauseStart, *previousFireDate; 

在你的.h文件中

编辑!

这里是countUp方法。 忘记下来的方法。 秒,分钟,小时是Ints

 - (void)countUp { seconds += 1; if (seconds == 60) { seconds = 0; minutes++; if (minutes == 60) { minutes = 0; hours++; } } } 

你没有。 而不是暂停简单的无效和释放旧的计时器,当用户再次按下播放,创build一个新的计时器。

refreshTimer应该在类级别上。 使用下面的代码来停止计时器:

 refreshTimer = [NSTimer scheduledTimerWithTimeInterval: refreshInSeconds target: self selector: @selector(refreshPage) userInfo: nil repeats: YES]; [refreshTimer invalidate]; refreshTimer = nil; 

要开始你可以再次安排定时器为第3行

使用以下代码也可以使用参数启动计时器:

 timer = [NSTimer scheduledTimerWithTimeInterval:time target:self selector:@selector(callMyMethod:) userInfo:[NSDictionary dictionaryWithObjectsAndKeys:web1, @"web", baseURL, @"baseURL", option1, @"option", nil] repeats:NO]; 

然后使用

 [timer invalidate]; 

停止计时器。

我希望这个代码能帮助你。

谢谢。

NSTimer没有暂停的事情,你必须停下来重新开始。

[yourTimer invalidate]; //将停止计时器,之后您可以再次启动计时器

更新了Swift 2的答案

 import UIKit class ViewController: UIViewController { var myTimer = NSTimer() var time = 0 // global var @IBOutlet weak var counterLabel: UILabel! @IBAction func pauseTimer(sender: AnyObject) { myTimer.invalidate() } @IBAction func startTimer(sender: AnyObject) { myTimer = NSTimer.scheduledTimerWithTimeInterval(1, target: self, selector: Selector("result"), userInfo: nil, repeats: true) } func result() { time++ counterLabel.text = String(time) print(time) } override func viewDidLoad() { super.viewDidLoad() } override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() } }