除了一个视图之外,禁用所有视图的用户交互

4

我想模拟UIAlertView的行为。基本上,我想呈现一个视图并禁用屏幕上所有其他视图的用户交互(除了呈现的视图)。我该如何实现这个功能?


你尝试过 self.view.superview.userInteractionEnabled=NO; 吗? - Arun
3个回答

10

你的仿警告视图应包括两个视图。第一个视图是屏幕大小,userInteractionEnabled设置为YES。这可以阻止任何触摸穿过到下面的视图。然后将您实际的警告窗口作为该视图的子视图添加,其中包含您喜欢的任何按钮等。

您可以将它们都包含在一个新的UIWindow中,您可以设置windowLevel以确保它们处于屏幕上方的任何其他内容之上。

如果适用于您的界面,您还可以向屏幕大小的视图添加非常轻微的backgroundColor,以使其变暗。


完美而简单的解决方案。它甚至可以在“禁用”选项卡和导航栏时正常工作 :) 谢谢 - StinkyCat

1
我建议在应用程序的主窗口中添加一个视图(禁用用户交互),其背景为黑色,透明度为0.3,每当您显示自定义警报时。这样做不仅可以防止用户交互,还可以在自定义警报视图后面的UI上添加微妙的暗化效果。

0

在所有你想禁用用户交互的视图上调用[view setUserInteractionEnabled:NO]。别忘了在关闭自定义警告框之前再次调用[view setUserInteractionEnabled:YES];


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接