【问题标题】:Display location service alert on top of all views在所有视图顶部显示位置服务警报
【发布时间】:2012-10-01 22:17:45
【问题描述】:

我的应用程序首先在带有progressHUD 窗口的初始图像处加载文件。 在appDelegate 中,我检查定位服务是否开启,如果它开启则没有问题,完成加载后,progressHUD 消失,但如果用户收到请求定位服务权限的警报,它会出现在progressHUD 窗口后面我无法在应用加载时取消/确定它。

我怎样才能始终在所有其他视图之上显示此警报,特别是在启动 progressHUD 之上乞求?

【问题讨论】:

  • 如果有的话,windowLevel 的设置是什么给你的progressHUD 窗口?

标签: objective-c location mbprogresshud


【解决方案1】:

您使用的是哪种 HUD 控件?

我个人使用的是SVProgressHUD,它非常酷且完整……但有一个缺点:它会创建自己的UIWindow 以将HUD 显示在所有内容之上。 Apple 不推荐这种行为,并且正如您刚刚意识到的那样,当系统创建自己的UIWindows 尤其是显示UIAlertViews 时,这种行为不起作用。

我使用的解决方案是修改SVProgressHUD 以将自己添加到应用程序的window.rootViewController.view 之上,这样它就可以保持在所有内容的顶部......在它自己的主窗口中,让UIAlertViews 之类的东西显示在他们的私人窗口位于此窗口之上,因此即使您的 progressHUD 可见,您也可以与UIAlertViews进行交互。


(如果你没有使用SVProgressHUD,你使用的另一个类可能确实有同样的问题,所以请检查那个)

我应该向SVProgressHUD 发布拉取请求,但还没有时间。如果我不忘记的话,可能很快就会这样做;)

【讨论】:

  • 我使用的是基本的MBProgressHUD。不明白你是如何修改它的所以UIAlertViews 被显示?基本上我只需要一个警报-location service,我不能控制这个特定的警报吗?
  • 不,您无法控制在哪个窗口上显示UIAlertViews(当然也不能控制操作系统本身显示的UIAlertView 作为定位服务使用的窗口)。我不使用MBProgressHUD,但如果它具有与我解释的相同的行为和问题,在所有内容之上使用它自己的窗口,甚至是系统警报视图,那么你需要在你的直接主视图而不是单独的窗口(我并没有真正使用 MBProgressHUD,因此您必须签入代码或就此联系开发人员)。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-10
相关资源
最近更新 更多