【问题标题】:Detect Touch in Base Class在基类中检测触摸
【发布时间】:2021-09-13 06:13:06
【问题描述】:

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

主要问题是这应该在应用程序的一部分而不是整个应用程序中实现,因此是否有任何替代方法可以将UIApplication 子类化以检测user interaction

我确实为这些特定控制器提供了一个基类,但 touch or gesture delegates 没有在基类中被调用。

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

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

【问题讨论】:

  • 你能添加一些代码吗?你是如何组织的?

标签: ios swift timer session-management user-inactivity


【解决方案1】:

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

    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
}

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-05-12
    • 2017-03-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-15
    • 1970-01-01
    相关资源
    最近更新 更多