UIViewController 没有将触摸传递给其他视图

Posted

技术标签:

【中文标题】UIViewController 没有将触摸传递给其他视图【英文标题】:UIViewController not passing touches to other Views 【发布时间】:2013-05-18 05:45:33 【问题描述】:

我有一个覆盖视图(覆盖整个屏幕),我可以接收触摸,但它不会将它们传递给响应者链。

我这样添加子视图:

UIWindow *mainWindow = [[UIApplication sharedApplication] keyWindow];
[mainWindow insertSubview:self.view aboveSubview:mainWindow];

我使用 addSubview 还是 insertSubview 似乎并不重要。

我的 touchesBegan 看起来像:

-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
        
    //do some stuff here..
    [super touchesBegan:touches withEvent:event];

我是否使用 SUPER 或 self.nextResponder 等的各种其他组合似乎并不重要。

最后,我需要一个覆盖整个屏幕的覆盖视图,我需要检测触摸然后将它们传递给它们下面的视图/视图控制器。

谢谢!

【问题讨论】:

【参考方案1】:

你是 addView 到 mainWindow,你的超级视图是 mainWindow,而不是 viewBlow 它。

您需要将视图添加到 VC 的视图中,如果您想要全屏。将状态栏设置为隐藏(或透明。未尝试),然后将视图的框架设置为 (0, -20, weight, height+20)。

【讨论】:

以上是关于UIViewController 没有将触摸传递给其他视图的主要内容,如果未能解决你的问题,请参考以下文章

Objective-c:将值从 AppDelegate 传递给 UIViewController

通过 UIViewController 传递触摸

UIScrollView 没有将触摸传递给子视图?

将触摸事件传递给 UICollectionViewCell 内容?

为啥我们将 UIViewController 传递给 UINavigationController 类?

将触摸传递给下的视图