Обнаружение бездействия пользователя в любом ВК

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

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

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


person boidkan    schedule 12.10.2014    source источник
comment
Вот ответ для Swift: stackoverflow.com/a/43940042/1226304 (в вопросе SO, о котором вы упомянули)   -  person derpoliuk    schedule 25.09.2018
comment
Спасибо! Я это проверю :)   -  person boidkan    schedule 25.09.2018
comment
К вашему сведению: это сработало для меня   -  person derpoliuk    schedule 26.09.2018


Ответы (2)


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

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

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

func resetTimer() {
    self.timer?.invalidate()
    self.timer = NSTimer.scheduledTimerWithTimeInterval(
        10, target: self, selector: "decrementScore", userInfo: nil, repeats: true)
}
person matt    schedule 13.10.2014
comment
Спасибо, чувак, это было очень простое решение! Извините, что мне потребовалось так много времени, чтобы добраться до этого, но эта функция внезапно стала очень низкой в ​​моем списке приоритетов, поэтому мне потребовалось время, чтобы найти ответы. - person boidkan; 20.11.2014
comment
@matt, где находится метод декремента. и как этот код будет работать как концепция тайм-аута простоя? o.O спасибо - person ernestocattaneo; 23.12.2014

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

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

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

person Michael Dautermann    schedule 12.10.2014