我有一个菜单,如果它在一定时间后处于非事件状态,我希望自动隐藏该菜单。该菜单由 UIViewController 的层次结构组成,呈现各种不同的 View 。
我正在考虑运行一个计时器,只要有触摸,它就会失效并重新开始。
是否可以捕获一组 UIView 中的所有触摸事件?也许只是保留一个 bool 值并使用主 UIWindow 来捕获触摸事件?
编辑:
我的应用程序是一种信息亭应用程序,带有主屏幕和菜单。当菜单打开时,我希望它运行一个自动关闭计时器,该计时器在整个菜单屏幕中的任何触摸后重置。菜单以模态方式显示在整个屏幕上。
最佳答案
一种确定的方法是继承 UIApplication
并重写 - (void)sendEvent:(UIEvent *)event
方法,应用中发生的每个触摸事件都会经历使用此方法,您可以检查 UIEvent
类型以查看其是否为 UIEventTypeTouches
并重置计时器。
另一种方法只需在整个用户可访问的 UI 上添加一个透明层并覆盖 hitTest:withEvent:
。
关于objective-c - 在某些 View 中捕获屏幕上任意位置的触摸事件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9493573/