禁用除特定视图之外的所有超级视图

时间:2012-11-10 19:26:44

标签: iphone objective-c ios touch superview

我有一个用UIButton点击打开的UIView。我想禁用除此特定视图及其子视图之外的所有其他超级视图的用户交互,我该怎么做?只是为了使这个视图成为响应用户触摸的唯一视图。

谢谢!

2 个答案:

答案 0 :(得分:5)

同意评论,您可能想要禁用视图的所有兄弟姐妹...(已编辑,以便您可以将它们设置为在某些时候启用)

- (void)setSiblings:(UIView *)view enabled:(BOOL)enabled {

    for (UIView *sibling in view.superview.subviews) {
        if (sibling != view) sibling.userInteractionEnabled = enabled;
    }
}

答案 1 :(得分:3)

我知道您已经接受了答案,但更好(更简单)的方法是全屏显示新视图。使用清晰的背景制作新视图。然后将真实视图作为子视图添加到此全屏视图中。这样您就不必乱用任何现有视图来显示这个新视图。你仍然可以看到它背后的一切,但触摸事件被清晰的全屏视图阻挡。

然后当你删除这个全屏视图(淡出动画?)时,你不必再次搞乱所有现有的视图。

您不必修改现有视图只是为了显示另一个视图。如果其中一个现有视图确实应该禁用其交互,会发生什么?当您解雇“模态”视图时,您将最终启用交互。