检测任何VC中的用户不活动

时间:2014-10-12 23:26:26

标签: swift appdelegate idle-timer

我需要能够跟踪上次用户活动(触摸屏幕)。我发现了这个问题并回答here但是这对我来说根本不起作用。 idleTimer.release不是一件事我只是得到一个错误。另外,我假设你必须创建一个NSTimer,因为idleTimer不是你要做的事情。我也对行

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

那么,我怎样才能在swift中实现这一目标?有点沮丧!

2 个答案:

答案 0 :(得分: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)
}

答案 1 :(得分:2)

对于要跟踪上次用户活动的每个视图控制器,使用NSDate或NSTimeInterval创建属性。

然后,在视图控制器子类中自由使用NSResponder或UIResponder(您没有指定是否在iOS或MacOS中执行此操作)方法,这是什么每个应用程序,窗口和视图都建立在。

之上 例如,

UIResponder有" touchesBegan:withEvent:"的方法,每次在视图中发生触摸时,您都可以重置视图控制器的日期属性。