2014-10-12 4 views
0

Мне нужно уметь отслеживать последнюю активность пользователя (прикоснуться к экрану). Я нашел этот вопрос и ответил here, однако это не работает для меня в быстрой ситуации. idleTimer.release - это не вещь, и я просто получаю сообщение об ошибке. Кроме того, я предполагаю, что вам нужно создать NSTimer, поскольку idleTimer не является ничем, если вы не сделаете это. Меня также смущает линияОбнаружение неактивности пользователя в любом VC

idleTimer = [[NSTimer scheduledTimerWithTimeInterval:maxIdleTime target:self selector:@selector(idleTimerExceeded) userInfo:nil repeats:NO] retain]; 

Итак, как я могу выполнить это быстро? Немного расстроен!

ответ

4

Вот как я это делаю в своем приложении. Создать таймер, чтобы проверить каждый так часто:

self.timer = NSTimer.scheduledTimerWithTimeInterval(
    10, target: self, selector: "decrementScore", userInfo: nil, repeats: true) 

Теперь мы знаем, что если decrementScore() вызывается, 10 секунд простоя прошло. Если пользователь что-то делает, нам необходимо перезапустить таймер:

func resetTimer() { 
    self.timer?.invalidate() 
    self.timer = NSTimer.scheduledTimerWithTimeInterval(
     10, target: self, selector: "decrementScore", userInfo: nil, repeats: true) 
} 
+0

Спасибо, человек, это было очень простое решение! Извините, мне потребовалось столько времени, чтобы дойти до этого, но эта функция внезапно пошла очень низко в моем списке приоритетов, поэтому мне потребовалось некоторое время, чтобы обойти ответы на ответы. – boidkan

+0

@matt где метод декремента? и как этот код будет работать как концепция простоя? o.O спасибо – ernestocattaneo

+0

Очевидно, 'decmentScore' - это метод' self'; параметр 'target' сообщает об этом. Что касается того, как это будет работать, я не понимаю, что вы спрашиваете; что он делает, очевидно. Возможно, это не то, что вам нужно в вашем приложении, но оно делает именно то, что мне нужно. – matt

0

Для каждого контроллера вида вы хотите отслеживать последнюю активность пользователя, создайте свойство либо NSDate, либо NSTimeInterval.

Затем используйте либеральное использование либо NSResponder, либо UIResponder (вы не указали, используете ли вы это в iOS или MacOS) в подклассе контроллера вида, который является тем, что каждое приложение, окно и представление построенный сверху.

UIResponder, например, имеет методы для «touchesBegan:withEvent:», и вы можете сбросить свойства даты вашего контроллера представления каждый раз, когда на экране появляется касание.