1

我需要能够跟踪最后的用户活动(触摸屏幕)。我在这里找到了这个问题和答案,但这对我来说根本不起作用。idleTimer.release不是一件事,我只是得到一个错误。另外,我假设你必须创建一个 NSTimer 因为 idleTimer 也不是一个东西,除非你做到了。我也被这条线弄糊涂了

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

那么,我怎样才能迅速做到这一点呢?有点沮丧!

4

2 回答 2

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)
}
于 2014-10-13T00:34:02.720 回答
2

对于您要跟踪其最后一个用户活动的每个视图控制器,使用 NSDate 或 NSTimeInterval 创建一个属性。

然后,在视图控制器子类中自由使用 NSResponder 或UIResponder(您没有指定是在 iOS 还是 MacOS 中执行此操作)方法,这是每个应用程序、窗口和视图构建的基础.

例如,UIResponder 具有用于“ touchesBegan:withEvent:”的方法,并且您可以在每次在视图中发生触摸时重置视图控制器的日期属性。

于 2014-10-12T23:40:26.257 回答