9

HIG (p.47) 说我必须能够处理在通话或录音期间出现的双高状态栏。

我该如何处理这种情况?

我真的只有一个屏幕,当双高状态栏显示时,带有工具栏的键盘在文本字段下方重叠 - 在其他屏幕上,东西只是有点皱巴巴但可用。

如果我可以检测到双高状态栏存在,我可能会调整文本字段的位置或使它们暂时变短,但是是否可以检测到双高状态栏何时存在?

编辑:也许如果有一种方法可以获取已知事物的绝对坐标,例如导航栏,并且如果它偏离 +20 像素,我会假设存在双高状态栏。想法?

还有一个次要问题,如果这个(或任何东西)有效,我只想使用隐藏常规状态栏

[[UIApplication sharedApplication] setStatusBarHidden:YES animated:NO]

但我不想同时隐藏两者——基本上是一种懒惰的方式,不必触摸我的任何屏幕——如果存在双重,则通过隐藏常规状态栏再次使其成为单一。上面的代码会隐藏两者吗?

4

2 回答 2

16

您可以监控 UIApplicationDelegate 的这些回调:

  • 应用程序:willChangeStatusBarFrame:

  • 应用程序:didChangeStatusBarFrame:

并且很容易在 iphone 模拟器中进行测试:Hardware->Toggle In-Call Status Bar

根据您的情况,您的视图和其中的东西可以自动调整大小以适应空间 - 检查各种对象的 Interface Builder 中检查器窗口的 View Size 区域

于 2010-08-06T02:10:07.363 回答
1

当用户使用许多其他实用程序(如热点)时,也会出现此问题。为了解决这个问题,我使用以下代码行(因为我自己被困在这个问题中)。

self.tabBarController?.tabBar.autoresizingMask = UIViewAutoresizing(rawValue: UIViewAutoresizing.RawValue(UInt8(UIViewAutoresizing.flexibleWidth.rawValue) | UInt8(UIViewAutoresizing.flexibleTopMargin.rawValue)))

可在此处获得相同问题的目标 C 参考

于 2018-05-16T09:48:23.440 回答