บางกรณีต้องทำ Action เมื่อหน้าจอไม่มีการโต้ตอบนานๆ
ใช้ UITapGestureRecognizer อ่านรายละเอียด
ตัวอย่าง: แจ้งเตือนเมื่อไม่มีการแตะหน้าจอ 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("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: รันทดสอบ
เปิดแอป รอ 5 วินาทีไม่แตะ จะพิมพ์ข้อความ ถ้าแตะหน้าจอ Timer จะรีเซ็ตใหม่