0

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

谢谢!

4

2 回答 2

5

同意评论,您可能想要禁用视图的所有同级...(已编辑以便您可以在某个时候将它们设置回启用)

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

    for (UIView *sibling in view.superview.subviews) {
        if (sibling != view) sibling.userInteractionEnabled = enabled;
    }
}
于 2012-11-10T19:32:51.197 回答
3

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

然后,当您删除此全屏视图(淡出动画?)时,您不必再次弄乱所有现有视图。

您不必为了显示另一个视图而修改现有视图。如果这些现有视图之一真的应该禁用其交互会发生什么?当您关闭“模态”视图时,您最终将启用交互。

于 2012-11-10T23:23:02.153 回答