【问题标题】:How to show a UIWindow over the keyboard but under a UIAlertView如何在键盘上但在 UIAlertView 下显示 UIWindow
【发布时间】:2013-03-15 09:50:18
【问题描述】:

我想在键盘上显示UIWindow,然后允许在请求“使用您当前位置”的权限时显示UIAlertView 在窗口上方显示。

将窗口的windowLevel 设置为UIWindowLevelAlert 会将其显示在键盘上方,但警报视图会显示在窗口下方。因此,UIWindowLevelAlert 的窗口级别必须高于警报视图的窗口级别。

【问题讨论】:

    标签: ios uiwindow


    【解决方案1】:

    在 iOS 6.1 中将窗口的 windowLevel 设置为 UIWindowLevelStatusBar 可以满足我的要求。但是,这很奇怪,因为根据 Apple 的文档,UIWindowLevelStatusBar 应该高于 UIWindowLevelAlert. 这是否也适用于 5.0、5.1 和 6.0?我无法在模拟器上测试它们,因为我的互联网真的很慢。

    【讨论】:

    • 我在 iOS 7 上遇到了一个奇怪的情况。使用 UIWindowLevelAlert - 1 不足以确保窗口位于警报后面。我发现UIWindowLevelAlert - 4 是必需的。
    • @ThomasW:我遇到了同样的问题。 UIWindowLevelAlert - 4 很笨拙,但它是唯一有效的方法。
    【解决方案2】:

    UIWindowLevel 是一个 CGFloat,因此您可以像这样分配一个中间值:首先从数组 [UIApplication sharedApplication].windows 中确定哪个窗口是键盘窗口。那么,

    window.windowLevel=(keyboardWindow.windowLevel+UIWindowLevelAlert)/2.f;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多