0

在我的应用程序中,当请求发送到服务器并且收到响应时,我正在显示加载屏幕,我正在删除该加载屏幕。

为了显示加载屏幕,我使用UIView并将其alpha降低到0.5,以便它显示背景视图。

我的问题是当加载屏幕仍然可见时,用户可以单击背景视图上显示的按钮。

我想要的是:当加载屏幕可见时,用户不应该能够点击屏幕上的任何地方。即使我做了userInteractionEnabled UIView但用户仍然可以点击按钮,为什么?

如果有人知道我做错了什么以及如何实现这一点,请告诉我。

提前致谢!

4

4 回答 4

1

UIView 可能禁用了交互,但如果按钮在视图层次结构中更高,则它位于视图的顶部,因此它仍然可以访问。

如果这是在 nib 中创建的视图,请确保它位于视图堆栈的顶部

或者,如果它以编程方式将其添加为函数末尾的子视图或将其添加到 mainWindow(非常小心地将内容添加到主窗口,这是层次结构的顶部)

于 2012-08-22T09:27:26.757 回答
0

当您向服务器发送请求并显示加载视图时,您可以使用 [[UIApplication sharedApplication] beginIgnoringInteractionEvents]。当您收到响应调用 [[UIApplication sharedApplication] endIgnoringInteractionEvents] 并删除加载视图时。

于 2012-08-23T17:40:37.547 回答
0

是的,我明白了,我为 UIView 做了 userInteractionEnabled false,所以点击事件被发送到主视图上的按钮。我删除了 userInteractionEnabled false,它工作正常。

于 2012-08-22T13:03:16.303 回答
0

同样明智的是,实用程序开源库可用。

iOS开源项目是MBProgressHUD,

它指的是平视显示器,一种覆盖在另一个视图上的视图,通常用于显示活动指示器和/或提供与 UI 交互的方法。HUD 的一个很好的例子是使用内置电影播放器​​播放电影时。当您点击屏幕时,电影播放器​​将在显示屏上显示一系列控件。另一个与 MBProgressHUD 相关的常见示例是在现有视图的顶部显示进度指示器。例如,在访问远程服务时,为了向用户提供反馈,您可以选择显示“请稍候”消息

你可以从这里下载源代码

于 2012-08-22T10:22:27.447 回答