2016-05-25 77 views
1

我是Swift的初學者,而且我面臨一個問題。用NSTimer在Swift中getTimeElapsed

我想創建一個包含一個定時器和一個按鈕的類 每次點擊按鈕我必須重新啓動定時器,如果定時器啓動和點擊按鈕之間的時間間隔大於(或等於) 400毫秒,我必須調用選擇器中的函數。

但是在swift中沒有「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 
    } 
} 

這樣,當你創建定時器,你必須設置用戶信息:

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中的Timer替換 – cncool