如何在iOS中检测用户5秒钟内无操作?


在设计任何iOS应用程序时,您可能会遇到一种情况,即如果屏幕在一段时间内处于非活动状态,则必须执行某种操作。

在这里,我们将看到同样的情况,我们将检测用户5秒钟内的无操作。

我们将使用Apple的UITapGestureRecognizer,您可以在这里阅读更多相关信息

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

让我们开始吧!我们将设计一个基本的应用程序,在启动应用程序后立即启动计时器。如果用户在5秒钟内没有触摸屏幕或执行任何操作,我们将显示一条消息“用户5秒钟以上未操作”。如果用户触摸屏幕,我们将重置计时器。

步骤1 - 打开Xcode -> 单视图应用程序 -> 我们将其命名为“DetectingInactivity”。

步骤2 - 打开ViewController.swift并复制并添加代码,我们将在下面看到解释

import UIKit
class ViewController: UIViewController {
   // create object of timer class
   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() {
      // perform any action you wish to
      print("User inactive for more than 5 seconds .")
      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()函数,在这里我们将再次重置计时器。

更新于:2019年7月30日

1K+ 浏览量

启动您的职业生涯

完成课程获得认证

开始学习
广告
© . All rights reserved.