iOS视图控制器包含| 子视图控制器将触摸传递给父视图控制器

the*_*ude 4 objective-c ios ios5

iOS5,我UIViewController在一个应用程序中使用遏制,我UITouchGesture在几个地方实现了.

当我添加一个孩子ViewController(全屏)时,触摸会传递给它的父母.

如果有的话,解决这个问题的方法是什么.我使用MPFlipViewController,当用户将手指移过Child时,我可以看到页面在孩子下方转动ViewController.

为了澄清,我将我的ViewController添加为具有以下内容的子项:

[self addChildViewController:vc];
[vc willMoveToParentViewController:nil];
[self.container addSubview:vc.view];
[vc didMoveToParentViewController:self];
Run Code Online (Sandbox Code Playgroud)

容器只是一个UIView,它可以看到childViewController和其他UIView对象的视图.谢谢

Tom*_*mmy 6

你已经倒退了.控制器包含是一回事,但这只是标准的视图层次结构和响应者链的东西.所以触摸最初发送给父母; 特别是对其视图进行了调用-(UIView *)hitTest:withEvent:.如果可以找到,则返回子视图.否则它返回自己的一个视图.可能它会自行返回.

如果父控制器正在捕获触摸,这意味着它从未被发送给孩子.不是它被发送给孩子然后上升到父母.

如果您希望父母使用触摸捕获做一些不寻常的事情,那么只需使用自定义视图并实现自己的视图-hitTest:withEvent:.作为第一步,执行此操作并记录输入以查看发生的情况.