检测基地中的触摸 Class

Detect Touch in Base Class

在我的应用程序中,我想在 inactivity 一段时间后执行 session timeout。但是,如果用户与应用程序交互,则 timer 需要重置。

主要关注的是这应该在应用程序的一部分而不是整个应用程序中实现,所以是否有任何替代方法可以让 subclassing UIApplication 检测 user interaction

我确实有一个用于那些特定控制器的基础 class,但是 touch or gesture delegates 没有在基础 class 中被调用。

如何检测少数控制器的用户交互。

提前感谢您的任何想法和帮助。

所以,我想出了一个办法。在我的基地 class,我之前在视图上设置了点击手势。

    let tap =  UITapGestureRecognizer(target: self, action: nil)
    tap.delegate = self
    tap.cancelsTouchesInView = false
    view.addGestureRecognizer(tap)

所以现在我在 window

上添加手势而不是 view.addGestureRecognizer(tap)
    if let window = UIApplication.shared.keyWindow {
        window.addGestureRecognizer(tap)
    }

我实现了UIGestureRecognizerDelegate

func gestureRecognizer(_ gestureRecognizer: UIGestureRecognizer, shouldReceive touch: UITouch) -> Bool { 
 // My Code here
   return true
}

所以,现在我的基地 class 能够检测到任何点击并调用 delegate

请注意: 添加此 delegate/ gesture 不会影响我 child class 的任何其他视图上的触摸或手势es.