【问题标题】:Can't interact with parent UIViewController (with NIB) having Child UIViewController (with NIB)无法与具有子 UIViewController(带 NIB)的父 UIViewController(带 NIB)交互
【发布时间】:2012-01-27 16:08:22
【问题描述】:

我们如何与被 Child UIViewController 阻止的父 UIViewController(有按钮)交互。显然,触摸事件没有通过子 NIB。 (已启用用户交互)

注意:我正在加载默认和自定义 NIB,(使用 initWithNibName: 方法)。

谢谢。

【问题讨论】:

    标签: iphone ios ipad uiview uiviewcontroller


    【解决方案1】:

    除非您将子视图 userInteractionEnabled 属性设置为 NO,否则所有操作都应通过子视图到达父视图。

    因此你需要:

    [childController.view setUserInteractionEnabled:YES];
    

    【讨论】:

    • 我已在 viewDidLoad 下将这一行添加到父级和子级。 [self.view setUserInteractionEnabled:YES];除此之外,我在两个 NIB 文件中都选中了启用用户交互的复选框,但仍然没有成功。
    • 当然父母也应该启用 userInteraction 让孩子启用用户交互。如果仍然没有成功,您孩子中的某些视图可能会阻止您与整个视图的交互,例如,没有交互的图像视图应该阻止其顶部的所有点击,并且不会向父级提供任何操作
    • 对不起,我把你的问题反过来了,你的意思是孩子阻止了父母的触摸。这个话题有答案,基本上你需要做的是有一个委托来发送所有事件到子视图。stackoverflow.com/questions/2003201/…
    • 我的错...谢谢你的捕获...我正在寻找答案,但似乎超出了我的知识范围,我看到一堆代码块,请你复制/粘贴给我什么我应该把代码放在我的 Parent.m 或 Child.m 中。再次感谢。
    • 你需要做的是你需要创建第一个和第二个块作为新文件,正如它在帖子中所说的那样,即 EventInterceptWindow.h 和 EventInterceptWindow.m。比在界面生成器中,您需要将窗口的类类型更改为 EventInterceptWindow.m。比您需要将 EventInterceptDelegate 设置为要获取事件的视图控制器。并使用第三块来弄清楚如何从委托中受益。
    【解决方案2】:

    这对我有用。 UIViewController 包含

    感谢支持社区的 cmets。

    http://www.youtube.com/watch?v=DzedmcFlm1c

    【讨论】:

      猜你喜欢
      • 2011-06-12
      • 2012-09-08
      • 1970-01-01
      • 1970-01-01
      • 2023-03-26
      • 2011-02-09
      • 1970-01-01
      • 2013-03-27
      • 1970-01-01
      相关资源
      最近更新 更多