2016-05-25 3 views
1

Я новичок в Swift, и у меня возникла проблема.getTimeElapsed in Swift с NSTimer

Я хочу создать класс, содержащий таймер и кнопку Каждый раз, когда кнопка постучана, мне нужно перезапустить таймер, если время между таймером начинается и нажатие кнопки больше (или равно) 400 миллисекунд, я должен вызвать функцию в селекторе.

Но в QuickTime нет метода GetTimeElapsed(), и я не знаю, как это сделать. Если у вас есть подсказки/уроки, это может быть круто!

Thx ребята

ответ

1

Несколько маленьких шагов:

  1. Определить время начала: (должно произойти в то же самое время, когда вы запускаете таймер)

    startTime = (NSDate.timeIntervalSinceReferenceDate())

  2. Измерьте разница во времени

    let elapsed = NSDate.timeIntervalSinceReferenceDate() - startTime

0

По умолчанию 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) 
} 
+0

Примечание: NSTimer был заменен таймером в Swift 3 – cncool

Смежные вопросы