在我的应用程序中,当请求发送到服务器时,我显示加载屏幕,当收到响应时,我正在删除该加载屏幕。
要显示加载屏幕,我使用UIView
并将 alpha 缩小为 0.5 ,以便显示背景视图。
我的问题当加载屏幕仍然可见时,用户可以点击背景视图上显示的按钮。
我想要的是:当加载屏幕可见时,用户无法点击屏幕上的任何位置。即使我为userInteractionEnabled
提出UIView
false ,但仍然可以点击按钮,为什么?
如果有人知道我在哪里做错了以及我如何做到这一点,请告诉我。
提前致谢!
答案 0 :(得分:1)
UIView可能已禁用交互,但如果视图层次结构上的按钮较高,则视图位于视图的顶部,因此仍可访问。
如果这是在笔尖中创建的视图,那么请确保它位于视图堆栈的顶部
或者如果它以编程方式将其添加为函数末尾的子视图或将其添加到mainWindow(非常小心地将内容添加到主窗口,这是层次结构的顶部)
答案 1 :(得分:0)
与实用的开源库类似。
iOS开源项目是MBProgressHUD,
它指的是Heads Up Display,一个覆盖在另一个视图上的视图,通常用于显示活动指示符和/或提供与UI交互的方式。 HUD的一个很好的例子是使用内置电影播放器播放电影。点击屏幕时,电影播放器将在显示屏上显示一系列控件。另一个常见示例,以及与MBProgressHUD相关的示例,是在现有视图之上显示进度指示器。例如,当访问远程服务时,为了向用户提供反馈,您可以选择显示“请稍候”消息
您可以下载source code from here。
答案 2 :(得分:0)
是的我得到了它,我为UIView执行了userInteractionEnabled false,因此click事件被发送到主视图上的按钮。我删除了userInteractionEnabled false并且它正常工作。
答案 3 :(得分:0)
当您向服务器&发送请求时,可以使用[[UIApplication sharedApplication] beginIgnoringInteractionEvents]。显示加载视图。当您收到响应调用[[UIApplication sharedApplication] endIgnoringInteractionEvents]&删除加载视图。