跟踪触摸事件而不覆盖 UIWindow 和 UIApplication 中的发送事件方法

Posted

技术标签:

【中文标题】跟踪触摸事件而不覆盖 UIWindow 和 UIApplication 中的发送事件方法【英文标题】:Tracking touch event without overwriting send event methods in UIWindow and UIApplication 【发布时间】:2014-03-14 05:12:39 【问题描述】:

我正在尝试为现有代码库的新模块实现会话管理,其中 main.mAppdelegateUIApplication 文件捆绑在一个库中,我们有无权修改。

我尝试通过将 手势识别器 添加到 UIWindow 方法来跟踪触摸事件,但通常的按钮触摸事件行为不端。

现在正计划继承 UIView 并覆盖 touches 开始并点击测试方法并使我所有的 UIView 类实现这个自定义的 UIView 类。

除了上述方法之外,我们还有什么更好的方法来跟踪触摸事件吗?

【问题讨论】:

【参考方案1】:

最好的方法是覆盖 UIApplicationUIWindowsend 事件,但在您的情况下这是不可能的。

尝试将UIGestureRecognizer 添加到您的应用程序共享UIWindow,然后设置其委托并实现以下委托方法。

-(BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch 

     return NO; 

返回NO 将阻止手势识别器看到这个触摸对象。 您可以在此方法中添加跟踪触摸事件的实现。

【讨论】:

以上是关于跟踪触摸事件而不覆盖 UIWindow 和 UIApplication 中的发送事件方法的主要内容,如果未能解决你的问题,请参考以下文章

Apple 文档在谈论其他哪些 UIWindow 接收触摸事件?

如何跨 SwiftUI 应用程序跟踪所有触摸

自定义 UIWindow 方向

没有uigesturerecognizer的ios触摸位置

UIWindow addSubview 处理事件

UIWindow 子类:Touches 事件不会被触发