Iphone 禁用除特定视图外的所有超级视图
我有一个UIView,通过点击UIView按钮打开。我想禁用除此特定视图及其子视图之外的所有其他超级视图的用户交互,我如何才能做到这一点?只是为了使此视图成为唯一能够响应用户触摸的视图Iphone 禁用除特定视图外的所有超级视图,iphone,objective-c,ios,touch,superview,Iphone,Objective C,Ios,Touch,Superview,我有一个UIView,通过点击UIView按钮打开。我想禁用除此特定视图及其子视图之外的所有其他超级视图的用户交互,我如何才能做到这一点?只是为了使此视图成为唯一能够响应用户触摸的视图 谢谢 同意该评论,您可能希望禁用视图的所有同级。。。(已编辑,以便您可以在某个时候将其设置回启用状态) 我知道您已经接受了答案,但更好(更简单)的方法是全屏显示新视图。使新视图具有清晰的背景。然后将真实视图作为子视图添加到此全屏视图。这样,您就不必为了显示这个新视图而干扰任何现有视图。您仍然可以看到它背后的一切,
谢谢 同意该评论,您可能希望禁用视图的所有同级。。。(已编辑,以便您可以在某个时候将其设置回启用状态)
我知道您已经接受了答案,但更好(更简单)的方法是全屏显示新视图。使新视图具有清晰的背景。然后将真实视图作为子视图添加到此全屏视图。这样,您就不必为了显示这个新视图而干扰任何现有视图。您仍然可以看到它背后的一切,但触摸事件被清晰的全屏视图阻止 然后,当您删除此全屏视图(淡出动画?)时,您就不必再次干扰所有现有视图
您不应该为了显示另一个视图而修改现有视图。如果其中一个现有视图真的应该禁用其交互,会发生什么?当您关闭“模态”视图时,最终将启用交互。一个视图只能有一个superview,那么所有其他superview是什么意思?你是说兄弟视图吗?这不是通过使用模态视图实现的吗?非常感谢,让我也来试试。看起来是个好办法。
- (void)setSiblings:(UIView *)view enabled:(BOOL)enabled {
for (UIView *sibling in view.superview.subviews) {
if (sibling != view) sibling.userInteractionEnabled = enabled;
}
}