2010-04-20 75 views
0

我有一种观点,有时候会被其他观点所覆盖。但是,如果用户在屏幕上滑动手指,我也想在屏幕上滑动底层视图。如何全球拦截触摸事件?

我可以开始为所有覆盖子视图并转发各种触摸事件的自定义视图,但这有点麻烦。也许有某种通知或者UIView或UIControl子类可以知道现在发生的触摸事件的另一种方式,无论它们在哪里。

简而言之:我需要一个UIView子类或UIControl子类,它知道在整个屏幕上发生的任何触摸事件。或者至少如果这是不可能的,知道在同一底层超视图中发生的任何触摸事件。

另外描述:有20个视图,全部都驻留在同一个superview中。第一种观点被其他19个人所覆盖。但是,如果用户在屏幕上滑动,那么第一个视图也必须滑动,所以它必须知道触摸事件。

有没有更好的解决方案,使所有19个视图向前触摸事件? (是的,在这个例子中,所有19个视图都对触摸事件做出响应)

回答

1

也许UIView的hitTest:withEvent:方法将有所帮助,这有助于我实现过去的尝试。

+0

好吧,不是。这可能在某些情况下工作。不幸的是,如果已经有人在某处触摸了某个触摸点,触摸就消失了。 – dontWatchMyProfile 2010-04-20 15:26:29

+0

对不起,如果我不够清楚。因此,您可以在父UIView中捕捉触摸,然后循环执行hitTest的所有子项子视图,以查看哪些触摸也受到影响。 – adam 2010-04-20 15:34:24

相关问题