Отображение оповещения службы определения местоположения поверх всех представлений

Мое приложение начинается с загрузки файлов в заставке с окном progressHUD. В appDelegate я проверяю, включена ли служба определения местоположения, если она включена, так что нет проблем, после завершения загрузки progressHUD исчезает, но если пользователь получает предупреждение о запросе разрешения для служб определения местоположения, он появляется за окнами progressHUD, и я не могу отменить / хорошо это во время загрузки приложения.

Как я могу отображать это предупреждение всегда поверх всех других представлений, особенно при попрошайничестве поверх заставки progressHUD?


person vadim    schedule 01.10.2012    source источник
comment
Какие настройки windowLevel вы указываете для своего окна progressHUD?   -  person Carl Veazey    schedule 02.10.2012


Ответы (1)


Какой элемент управления HUD вы используете?

Я лично использую SVProgressHUD, который действительно крут и совершенен… но у него есть один единственный недостаток: он создает свой собственный UIWindow для отображения HUD поверх всего. Такое поведение не рекомендуется Apple и не работает, как вы только что поняли, когда система создает свой собственный UIWindows специально для отображения UIAlertViews.

Решение, которое я использовал, состоит в том, чтобы изменить SVProgressHUD, чтобы добавить себя поверх window.rootViewController.view приложения, чтобы оно оставалось поверх всего… в своем собственном главном окне, позволяя таким элементам, как UIAlertViews, отображаться в их частном окне, которое находится поверх этого. , и, таким образом, позволяет вам взаимодействовать с UIAlertViewsдаже когда виден ваш progressHUD.


(Если вы не используете SVProgressHUD, у другого класса, который вы используете, вероятно, есть такая же проблема, поэтому проверьте его)

Я должен был отправить запрос на включение в SVProgressHUD, но пока не было времени. Возможно, в ближайшее время сделаю, если не забуду ;)

person AliSoftware    schedule 01.10.2012
comment
Я использую базовый MBProgressHUD. Не понял, как именно вы модифицируете его, чтобы UIAlertViews отображалось? В основном мне это нужно только для одного оповещения-location service, не могу ли я как-нибудь управлять этим конкретным оповещением? - person vadim; 02.10.2012
comment
Нет, вы не можете контролировать, в каком окне будут отображаться UIAlertViews (и уж точно не UIAlertView, отображаемое самой ОС как окно, используемое службой определения местоположения). Я не использую MBProgressHUD, но если он имеет то же поведение и проблему, что и тот, который я объяснил, используя свое собственное окно поверх всего, даже в представлениях системных предупреждений, тогда вам потребуется, чтобы ваш HUD прогресса отображался в вашем главном окне. напрямую, а не в отдельном окне (на самом деле я не использую MBProgressHUD, поэтому вам придется проверить код или связаться с разработчиком по этому поводу). - person AliSoftware; 02.10.2012