如何在iOS中检测5秒钟的用户不活动状态?
在设计任何iOS应用程序时,您可能会遇到以下情况:如果屏幕在一段时间内处于非活动状态,则必须采取某种措施。
在这里,我们将看到相同的结果,我们将检测用户5秒钟的不活动状态。
我们将使用Apple的UITapGestureRecognizer,您可以在此处了解更多信息
https://developer.apple.com/documentation/uikit/uitapgesturerecognizer。
因此,让我们开始吧!我们将设计一个基本应用程序,在该应用程序启动后立即启动计时器。如果用户在5秒钟内无法触摸屏幕或不执行任何操作,我们将显示一条消息“用户处于非活动状态超过5秒钟。”如果用户触摸屏幕,我们将重置计时器。
步骤1-打开Xcode-→SingleViewApplication-→我们的名称为“DetectingInactivity”。
步骤2-打开ViewController.swift并复制并添加代码,我们将看到以下说明
import UIKit
class ViewController: UIViewController {
//创建计时器类的对象
var timer = Timer() override func viewDidLoad() {
super.viewDidLoad()
timer = Timer.scheduledTimer(timeInterval: 5, target: self, selector: #selector(ViewController.doStuff), userInfo: nil, repeats: true)
let resetTimer = UITapGestureRecognizer(target: self, action: #selector(ViewController.resetTimer));
self.view.isUserInteractionEnabled = true
self.view.addGestureRecognizer(resetTimer)
}
@objc func doStuff() {
//执行您希望执行的任何操作
print("用户闲置超过5秒钟。")
timer.invalidate()
}
@objc func resetTimer() {
timer.invalidate()
timer = Timer.scheduledTimer(timeInterval: 5, target: self, selector: #selector(ViewController.doStuff), userInfo: nil, repeats: true)
}
}步骤3-运行应用程序!
在启动时,将调用计时器,如果不触摸,则会调用屏幕功能doStuff()。在这里,只要用户在一定时间内不触摸屏幕,您就可以执行您希望执行的任何活动。
如果用户触摸屏幕,我们将调用resetTimer()函数,在该函数中我们将再次重置计时器。