我正在努力查明用户是否在3分钟内没有点击、滚动或应用程序中的任何其他类型的事件;或者换句话说,用户在应用程序中没有交互,那么应用程序将使他退出。类似的银行申请。
我可以按如下方式添加GestureRecognizer
,但我想了解UI上的所有活动,有什么方法可以处理这样的事情吗?
在collectionView
:上设置tap recognizer
在viewDidLoad
中添加以下内容:
let collectionViewTap = UITapGestureRecognizer(target: self, action: #selector(collectionViewTap))
collectionView.addGestureRecognizer(collectionViewTap)
声明当点击collectionView
时将调用的此函数:
func collectionViewTap() {
print("collectionViewTap")
}
我可以实现如下的时间差,也可以看到时间差。
func isUserRequiredToLogin(){
let lastActivityDateAndTime = UserDefaults.standard.object(forKey: "lastActivityDateAndTime") as! Date
let currentDate = Date()
let minutes = currentDate.minutes(from: lastActivityDateAndTime)
print(minutes)
}
var timer: Timer?
func resetTimer() {
timer?.invalidate()
timer = Timer.scheduledTimer(timeInterval: 10.0, target: self, selector: #selector(timeIsOur), userInfo: nil, repeats: false)
}
@objc func timeIsOur() {
//logout
//log something
//alerts
}
您可以在代码中添加一个Timer,并在任何需要的事件中重置它。如果计时器不重置-则timeIsOur将被执行,您可以随心所欲-(注销或记录一些内容(试着用这个https://www.zerotoappstore.com/how-to-detect-user-inactivity-swift.html它在我的生产应用程序中工作。