如何将触摸事件传递给其他视图?

时间:2012-07-02 08:42:39

标签: iphone ios cocos2d-iphone touch

+-----------------------+  +--------------------+
| A                     |  | A                  |
| +-------------------+ |  | +----------------+ |
| |B                  | |  | | C              | |
| |                   | |  | |                | |
| +-------------------+ |  | +----------------+ |
+-----------------------+  +--------------------+

我有一个如上所述的视图层次结构。 (B和C中的每一个占据A的整个空间,每个都是屏幕尺寸。首先添加B,然后添加C)

出于某种原因,C正在获得滚动效果的触摸事件
(B是cocos2d-x层,C(滚动视图)设置scrollViewDidScroll时B的位置 http://getsetgames.com/2009/08/21/cocos2d-and-uiscrollview/

我想将触摸事件传递给B,或者当它不滚动时将其传递给子视图。

如何在此处将触摸事件传递给B?

2 个答案:

答案 0 :(得分:0)

所以,如果我正确理解你的背景,B和C不会重叠(至少不完全)并共享相同的超级视图。

我看到的唯一可能是定义您自己的自定义窗口,即覆盖

- (void)sendEvent:(UIEvent*)event {

根据需要处理你在A中获得的接触。

有关更改触摸事件的目标视图的示例,请参阅this thread on S.O.。您需要构建自己的流程来处理您必须管理的不同情况,并可能通过进行某种投影来弄乱触摸坐标。

答案 1 :(得分:0)

WWDC 2012 scroll view session涵盖了同样的问题。

步骤是..

1. You hide your scrollview.
2. place dummy view where scrollview would be and attach scrollview's panGestureRecognizer to this view.

当它不滚动时,看到触摸进入虚拟视图后面的视图。