【发布时间】:2013-03-15 09:50:18
【问题描述】:
我想在键盘上显示UIWindow,然后允许在请求“使用您当前位置”的权限时显示UIAlertView 在窗口上方显示。
将窗口的windowLevel 设置为UIWindowLevelAlert 会将其显示在键盘上方,但警报视图会显示在窗口下方。因此,UIWindowLevelAlert 的窗口级别必须高于警报视图的窗口级别。
【问题讨论】:
我想在键盘上显示UIWindow,然后允许在请求“使用您当前位置”的权限时显示UIAlertView 在窗口上方显示。
将窗口的windowLevel 设置为UIWindowLevelAlert 会将其显示在键盘上方,但警报视图会显示在窗口下方。因此,UIWindowLevelAlert 的窗口级别必须高于警报视图的窗口级别。
【问题讨论】:
在 iOS 6.1 中将窗口的 windowLevel 设置为 UIWindowLevelStatusBar 可以满足我的要求。但是,这很奇怪,因为根据 Apple 的文档,UIWindowLevelStatusBar 应该高于 UIWindowLevelAlert. 这是否也适用于 5.0、5.1 和 6.0?我无法在模拟器上测试它们,因为我的互联网真的很慢。
【讨论】:
UIWindowLevelAlert - 1 不足以确保窗口位于警报后面。我发现UIWindowLevelAlert - 4 是必需的。
UIWindowLevelAlert - 4 很笨拙,但它是唯一有效的方法。
UIWindowLevel 是一个 CGFloat,因此您可以像这样分配一个中间值:首先从数组 [UIApplication sharedApplication].windows 中确定哪个窗口是键盘窗口。那么,
window.windowLevel=(keyboardWindow.windowLevel+UIWindowLevelAlert)/2.f;
【讨论】: