Iphone 如何检测双高状态栏?

Iphone 如何检测双高状态栏?,iphone,statusbar,Iphone,Statusbar,HIG(第47页)说,我必须能够处理在通话或录音过程中出现的双高状态栏 我该如何处理这种情况 我真的只有一个屏幕,当双高状态栏显示时,上面有工具栏的键盘在文本字段的下方——在其他屏幕上,东西只是有点粗糙,但可以使用 如果我可以检测到双高状态栏的存在,我可能会调整文本字段的位置或使它们暂时变短,但是否可以检测到双高状态栏何时存在 编辑:如果有一种方法可以获得已知事物的绝对坐标,比如导航栏,如果它是+20像素,我会假设双高状态栏存在。想法 第二个问题,如果这个(或任何东西)有效,我只想使用 [[UI

HIG(第47页)说,我必须能够处理在通话或录音过程中出现的双高状态栏

我该如何处理这种情况

我真的只有一个屏幕,当双高状态栏显示时,上面有工具栏的键盘在文本字段的下方——在其他屏幕上,东西只是有点粗糙,但可以使用

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

编辑:如果有一种方法可以获得已知事物的绝对坐标,比如导航栏,如果它是+20像素,我会假设双高状态栏存在。想法

第二个问题,如果这个(或任何东西)有效,我只想使用

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

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

您可以监视UIApplicationLegate的这些回调:

  • 应用程序:willChangeStatusBarFrame:

  • 应用程序:didChangeStatusBarFrame:

在iphone模拟器中测试这一点很容易:硬件->在呼叫状态栏中切换


根据您的情况,您的视图和视图中的内容可以自动调整大小以适应空间-检查Interface Builder中不同对象上inspector窗口的视图大小区域

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


这是否可以解决用户正在通话或正在录音,然后进入我的应用程序的情况?或者它只会在应用程序中监视一次更改吗?好的,也许你可以检查UIApplicationStatusBarFrameUserInfoKey谢谢你为我指明了正确的方向。为了在进入应用程序之前处理呼叫发起,在一些viewDidLoad中,我只需检查statusbar框架的大小-如果超过20,则假设呼叫正在进行,并相应地调整视图大小。我和代表之间有麻烦。它在方法放入我的AppDelegate时触发,但在我需要它的类中时不会触发,即使我在该类中采用UIApplicationDelegate,因此不确定如何处理在每个类中启动或结束的调用-AppDelegate中的方法到我要在其中更改视图的类之间的桥是什么?整理委托问题
self.tabBarController?.tabBar.autoresizingMask = UIViewAutoresizing(rawValue: UIViewAutoresizing.RawValue(UInt8(UIViewAutoresizing.flexibleWidth.rawValue) | UInt8(UIViewAutoresizing.flexibleTopMargin.rawValue)))