【问题标题】:Reverse NSTimer for scheduledTimerWithTimeInterval in Objective-CObjective-C中scheduledTimerWithTimeInterval的反向NSTimer
【发布时间】:2017-10-21 13:42:20
【问题描述】:

我有 NSTimerAction。但我想在第一次 5 秒后调用 Action,第二次在 4 秒后调用 ...。

_timepast = 6;
self.timer = [NSTimer scheduledTimerWithTimeInterval:1 target:self selector:@selector(handleDelay) userInfo:nil repeats:YES];


-(void)handleDelay
{
   _timepast = _timepast - 1;
   dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(_timepast * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
      [self handleTimer];
   });
}

【问题讨论】:

  • 所以这意味着你想要倒计时,对吧?
  • @HardikShah 是的,没错。

标签: ios objective-c nstimer


【解决方案1】:

首先,如果您想在 5 秒后开始操作,然后创建第一个计时器,该计时器在 5 秒延迟后触发,然后使第一个计时器无效并以 5 的倒计时启动您的第二个计时器。这意味着在 5 秒延迟后,您将选择器调用并处理其中的操作。我正在为您提供有关第二个计时器如何工作的代码。我希望你知道如何处理第一个计时器的 5 秒延迟。

  1. 创建2个变量

    var timerCount = 5

    var timer : Timer!

  2. 创建 1 秒间隔的计时器

    timer = Timer.scheduledTimer(timeInterval: 1, target:self, selector: #selector(self.startTimer), userInfo: nil, repeats: true)

  3. 在选择器方法中写反向检查之类的,

    func startTimer() { if timerCount > 0 { label.text = String(timerCount--) } else { timer.invalidate() } }

【讨论】:

  • 它不起作用..我希望在 5 秒后执行第一个操作,在 4 之后执行下一个操作,在 3 之后执行下一个操作,在 0.5 秒后执行下一个操作。您的代码在同一时间后调用操作。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-01-28
  • 2023-03-04
  • 1970-01-01
相关资源
最近更新 更多