Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> IOS

จะตรวจจับการไม่ใช้งานของผู้ใช้เป็นเวลา 5 วินาทีใน iOS ได้อย่างไร


ขณะออกแบบแอปพลิเคชัน iOS คุณอาจเจอสถานการณ์ที่คุณต้องดำเนินการบางอย่างหากหน้าจอไม่ได้ใช้งานเป็นระยะเวลาหนึ่ง

ที่นี่เราจะเห็นเช่นเดียวกัน เราจะตรวจพบการไม่ใช้งานของผู้ใช้เป็นเวลา 5 วินาที

เราจะใช้ UITapGestureRecognizer ของ Apple คุณสามารถอ่านเพิ่มเติมได้ที่นี่

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() ซึ่งเราจะรีเซ็ตตัวจับเวลาอีกครั้ง