如何在iOS中检测5秒钟的用户不活动状态?

在设计任何iOS应用程序时,您可能会遇到以下情况:如果屏幕在一段时间内处于非活动状态,则必须采取某种措施。

在这里,我们将看到相同的结果,我们将检测用户5秒钟的不活动状态。

我们将使用Apple的UITapGestureRecognizer,您可以在此处了解更多信息

https://developer.apple.com/documentation/uikit/uitapgesturerecognizer。

因此,让我们开始吧!我们将设计一个基本应用程序,在该应用程序启动后立即启动计时器。如果用户在5秒钟内无法触摸屏幕或不执行任何操作,我们将显示一条消息“用户处于非活动状态超过5秒钟。” 如果用户触摸屏幕,我们将重置计时器。

步骤1-打开Xcode-→Single View Application-→我们的名称为“ 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()函数,在该函数中我们将再次重置计时器。