如何通过UIViewController检测屏幕活动(Swift,iOS 9)

u84*_*six 1 uiviewcontroller ios swift ios9 xcode7

我想创建一个UIViewController,其超时会在一段时间后展开segue,但会检测屏幕活动何时并重置计时器.如果设备闲置在那里,请考虑一个密码输入屏幕,您希望屏幕超时.我想iphone/ipad会超时,然后当你解锁并返回该应用程序时,我希望segue在这种情况下放松.对此最好的方法是什么?

Ras*_*n L 5

Decalare计时器

var timer = NSTimer() 
Run Code Online (Sandbox Code Playgroud)

在你viewDidLoad做的时候把计时器设置为你喜欢的任何东西

terminateApp将在60秒后调用

timer = NSTimer.scheduledTimerWithTimeInterval(60, target: self, selector: Selector("terminateApp"), userInfo: nil, repeats: true)

func terminateApp(){
    // Do your segue and invalidate the timer
    timer.invalidate()
}
Run Code Online (Sandbox Code Playgroud)

但是,如果用户按下您要使计时器无效并启动新计时器的视图,请执行以下操作:

在你的viewDidLoad添加中gestureRecognizer,当用户触摸屏幕时会调用resetTimer:

let resetTimer = UITapGestureRecognizer(target: self, action: "resetTimer");
self.view.userInteractionEnabled = true
self.view.addGestureRecognizer(resetTimer)

func resetTimer(){
    // invaldidate the current timer and start a new one
    timer.invalidate()
    timer = NSTimer.scheduledTimerWithTimeInterval(60, target: self, selector: Selector("terminateApp"), userInfo: nil, repeats: true)
}
Run Code Online (Sandbox Code Playgroud)