2014-09-26 48 views
0

我一直沒有在iOS中編程很久,但我只是想知道是否有人可以提供幫助。 我有一個IBAction函數,每次按下它都會增加一個計數器,所以我可以看到它被按下了多少次。但我想添加功能,所以當它按下時,我可以顯示每次按下之間的時間。 所以,如果他們按下按鈕,一個彈出。然後他們再次按下它,彈出2個按鈕,而且彈出按鈕後的時間。 我不知道如何實現這一點,因爲我不知道如何找到事件的時間。有UIEvent的時間戳,但我不完全確定如何使用它。2個事件之間的時間

回答

3

除非你需要極高的精度,它可能足以讓當你IBAction爲方法被調用在這種情況下,你可以做這樣的事情的當前時間:

- (IBAction) buttonAction: (id) inButton 
{ 
    NSDate    *now = [NSDate date]; 

    if (self.lastEventTime != nil) { 
     NSTimeInterval  timeSinceLast = [now timeIntervalSinceDate: self.lastEventTime]; 

     NSLog(@"time since last press: %f seconds", timeSinceLast); 
    } 

    self.lastEventTime = now; 
} 

這裏是如何可能看着斯威夫特:

class SomeController: UIViewController { 
    var lastEventTime     : NSDate? 

    @IBAction func buttonAction(inButton: AnyObject) { 
     let now = NSDate() 

     if let lastEventTime = self.lastEventTime { 
      let timeSinceLast = now.timeIntervalSinceDate(lastEventTime) 

      println("time since last press: \(timeSinceLast) seconds") 
     } 

     self.lastEventTime = now 
    } 
} 
+0

對不起,我正在努力理解你的代碼中發生了什麼。這在什麼情況下適合內部/外部我目前的IBAction功能。 (我在斯威夫特也工作) – JamesDonnelly 2014-09-26 17:47:25

+0

另外,什麼是lastEventTime? – JamesDonnelly 2014-09-26 17:59:39

+0

對不起,忘了在Swift中提供一個例子。我已更新我的示例。希望它更清楚。 – 2014-09-26 18:14:17

-2

你可以有一個NSDate屬性,你每次分配的事件都會被觸發。然後你總是比較財產和當前時間之間的差異。

@property (nonatomic) NSDate *lastEventDate; 

- (IBAction) clicked:(id)sender{ 
     NSDate *now = [NSDate date]; 
     NSTimeInterval differenceBetweenDatesInSeconds = [self.lastEventDate timeIntervalSinceDate:now]; 

     //Do something with the interval (show it in the UI) 
     [self setLastEventDate:now]; 
}