Как показать UIWindow поверх клавиатуры, но под UIAlertView

Я хочу показать UIWindow над клавиатурой, но затем разрешить отображение UIAlertView, отображаемого при запросе разрешения на «Использовать ваше текущее местоположение», над окном.

Установка окна с windowLevel на UIWindowLevelAlert показывает его над клавиатурой, но затем окно предупреждения отображается под окном. Таким образом, UIWindowLevelAlert должен быть на более высоком уровне окна, чем уровень окна предупреждения.


person ma11hew28    schedule 15.03.2013    source источник


Ответы (2)


Установка окна windowLevel на UIWindowLevelStatusBar делает то, что я хочу в iOS 6.1. Но это странно, потому что, согласно документации Apple, UIWindowLevelStatusBar должно быть выше UIWindowLevelAlert. Будет ли это работать в 5.0, 5.1 и 6.0? У меня возникли проблемы с их тестированием на симуляторе, потому что у меня очень интернет работает медленно.

person ma11hew28    schedule 15.03.2013
comment
Я столкнулся со странной ситуацией на iOS 7. Использование UIWindowLevelAlert - 1 недостаточно, чтобы убедиться, что окно находится за предупреждением. Я обнаружил, что требуется UIWindowLevelAlert - 4. - person ThomasW; 10.07.2014
comment
@ThomasW: я столкнулся с той же проблемой. UIWindowLevelAlert - 4 чертовски дерганый, но это единственное, что работает. - person MusiGenesis; 28.08.2014

UIWindowLevel — это CGFloat, поэтому вы можете присвоить промежуточное значение следующим образом: Сначала определите, какое окно является окном клавиатуры из массива [UIApplication sharedApplication].windows. Потом,

window.windowLevel=(keyboardWindow.windowLevel+UIWindowLevelAlert)/2.f;
person Nick C    schedule 15.03.2013