2014-09-26 2 views
0

Я давно не программировал в iOS, но мне просто интересно, сможет ли кто-нибудь помочь. У меня есть функция IBAction, и каждый раз, когда она нажата, увеличивается счетчик, поэтому я могу видеть, сколько раз он был нажат. Но я хочу добавить функциональность, поэтому, когда она нажата, я могу отображать время между каждым нажатием. Итак, если они нажимают кнопку, то появляется всплывающее окно. Затем они снова нажимают его и нажимают 2 нажатия кнопки, а также количество времени, которое они нажимали на него. Я не уверен, как реализовать это, потому что я не уверен, как найти время события. Есть отметка времени UIEvent, но я не совсем уверен, как ее использовать.Время между двумя событиями

ответ

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; 
} 

Вот как это может выглядеть в Swift:

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. (Я тоже работаю в Swift) – JamesDonnelly

+0

Также, что такое LastEventTime? – JamesDonnelly

+0

Извините, что забыл привести пример в Swift. Я обновил свой пример. Надеюсь, это более понятно. –

-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]; 
} 
Смежные вопросы