在特定视图中的屏幕上的任何位置捕捉触摸事件?

时间:2012-02-29 04:25:19

标签: objective-c ios ipad event-handling uitouch

我有一个菜单,如果它在一定时间后无效,我想自动隐藏。此菜单由UIViewControllers层次结构组成,它呈现各种不同的视图。

我正在考虑运行计时器,无论何时触摸都会使计时器失效并重新启动。

是否可以捕获一组UIViews中的所有触摸事件?也许只是保持一个布尔值并使用主UIWindow来捕捉触摸事件?

修改

我的应用程序是各种各样的自助服务终端应用程序,带有主屏幕和菜单。当菜单启动时,我希望它运行自动关闭计时器,在整个菜单屏幕中的任何触摸后重置。菜单以模态显示在整个屏幕上。

2 个答案:

答案 0 :(得分:1)

一种可靠的方法是继承UIApplication并覆盖- (void)sendEvent:(UIEvent *)event方法,您应用中发生的每个触摸事件都会通过此方法,您可以检查UIEvent类型以查看是否它是UIEventTypeTouches并重置计时器。

另一种方法是在整个用户可​​访问的UI上添加透明图层并覆盖hitTest:withEvent:

答案 1 :(得分:0)

你可以在你的模态视图控制器顶部看到一个不可见的视图,并在其上放置一个可以启动计时器的手势识别器,或者

-touchesBegan:withTouches

方法,然后发送到。nextResponder相同的方法。