2014-09-26 47 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]; 
}