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

我有一个如上所述的视图层次结构。(B和C各占A的整个空间,各占屏幕大小,先加B后加C)

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

我想在不滚动时将触摸事件传递给 B 或它的子视图。

如何在这里将触摸事件传递给 B?

4

2 回答 2

0

WWDC 2012 滚动视图会话中涵盖了同样的问题。

步骤是..

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

瞧,当它不滚动时,触摸会转到虚拟视图后面的视图。

于 2012-07-06T01:34:59.730 回答
0

因此,如果我正确理解您的上下文,B 和 C 不会重叠(至少不完全重叠)并且共享相同的超级视图。

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

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

根据需要处理您在 A 中获得的触摸。

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

于 2012-07-02T09:09:28.647 回答