Iphone 如何暂停/播放NSTimer?

Iphone 如何暂停/播放NSTimer?,iphone,objective-c,ios,xcode4,nstimer,Iphone,Objective C,Ios,Xcode4,Nstimer,我需要在我正在执行的0:0:0之前启动NSTimer,并且我在单击时有一个暂停按钮,如果用户单击“播放”,计时器必须在一段时间后暂停,它必须从暂停的时间值开始运行。如何在NSTimer中暂停和播放? 有什么帮助吗?提前谢谢。你不需要。不要暂停,只需使旧计时器失效并释放,当用户再次按下Play时,创建一个新的计时器。使用以下代码启动带有参数的计时器: timer = [NSTimer scheduledTimerWithTimeInterval:time target:self selector:

我需要在我正在执行的0:0:0之前启动NSTimer,并且我在单击时有一个暂停按钮,如果用户单击“播放”,计时器必须在一段时间后暂停,它必须从暂停的时间值开始运行。如何在NSTimer中暂停和播放?
有什么帮助吗?提前谢谢。

你不需要。不要暂停,只需使旧计时器失效并释放,当用户再次按下Play时,创建一个新的计时器。

使用以下代码启动带有参数的计时器:

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

[timer invalidate];
停止计时器

我希望这段代码能帮助你


谢谢。

试试这个狗屎。。。对我来说很有用

编辑

老实说,我的实际代码是:

-(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文件中

编辑

这是倒计时法。忘记向下的方法。秒、分钟、小时都是整数

- (void)countUp
{
    seconds += 1;

    if (seconds == 60) 
    {
        seconds = 0;
        minutes++;

        if (minutes == 60) 
        {
            minutes = 0;
            hours++;
        }
    }

}

refreshTimer
应在类级别。使用以下代码停止计时器:

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

要启动,您可以再次将计时器安排为第3行

没有为NSTimer暂停,您必须停止并再次启动它


[你的计时器失效]//将停止计时器,然后您可以再次启动它

更新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()
  }
}

你只是想记录一些经过的时间吗?NSTimer并不是为了这个目的。它的目的或多或少是计划在运行循环中触发事件。可能重复感谢您的回复,如何创建新计时器?我的意思是,我需要将PausedTime传递给哪个NSTimer方法,以及b'coz是如何以NSString格式传递的。您是如何将NSTimer参数传递给这两个方法的?因为我在NSString中暂停了秒,,,谢谢更新,我想你忘了包括倒计时和倒计时方法代码,你能告诉我这些方法里面有什么吗?