【问题标题】:getTimeElapsed in Swift with NSTimer使用 NSTimer 在 Swift 中 getTimeElapsed
【发布时间】:2017-12-01 02:13:49
【问题描述】:

我是 Swift 的初学者,我遇到了一个问题。

我想创建一个包含计时器和按钮的类 每次点击按钮时我都必须重新启动计时器,如果计时器启动和点击按钮之间经过的时间大于(或等于)400 毫秒,我必须调用选择器中的函数。

但是 swift 中没有“GetTimeElapsed()”方法,我不知道该怎么做。 如果你有一些线索/教程可能会很酷!

谢谢大家

【问题讨论】:

    标签: ios swift timer nstimer


    【解决方案1】:

    几个小步骤:​​

    1. 定义开始时间:(应该在你启动计时器的同时发生)

      startTime = (NSDate.timeIntervalSinceReferenceDate())

    2. 测量时差

      let elapsed = NSDate.timeIntervalSinceReferenceDate() - startTime

    【讨论】:

      【解决方案2】:

      默认情况下,NSTimer 没有此功能。
      正确的方法是处理日期并进行比较。

      顺便说一句,你可以像这样做一个很好的扩展:

      public extension NSTimer {
          var elapsedTime: NSTimeInterval? {
              if let startDate = self.userInfo as? NSDate {
                 return NSDate().timeIntervalSinceDate(startDate)
              }
              return nil 
          }
      }
      

      这样,当你创建你的定时器时,你必须设置userInfo:

      let timer = NSTimer.scheduledTimerWithTimeInterval(1.0, target: self, selector: #selector(foo), userInfo: NSDate(), repeats: true)
      

      在您的“foo”方法中,您可以测试经过的时间:

      func foo() {
         print(self.timer.elapsedTime)
      }
      

      【讨论】:

      • 注意:NSTimer 在 Swift 3 中已被 Timer 取代
      猜你喜欢
      • 2014-08-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-03-15
      • 1970-01-01
      • 2015-05-22
      • 1970-01-01
      相关资源
      最近更新 更多