我正在使用 UIApplicationWillChangeStatusBarFrameNotification 来告知状态栏何时更改,这确实帮助我弄清楚正在进行的调用何时消失,并且行为符合我的意愿。
但是,在我的应用程序中有一个场景是全屏显示,其中包括隐藏状态栏……除了我不想在通话时隐藏状态栏。
我的理解是,如果我 (a) 接到电话,然后 (b) 返回到我的应用程序,那么首先显示此状态栏的唯一方式。
所以……当我接到电话返回我的应用程序时……没有绿色状态栏。 (首先,当我点击我的应用程序使状态栏和导航栏和标签栏重新出现时,绿色状态栏确实出现了,所以它并不是完全消失了;只是隐藏了,因为我告诉它要隐藏。在模拟器,执行“硬件 -> 切换通话中状态栏”按我希望的方式工作,但我不认为这种行为会在现实世界中以这种方式真正发生。)
我找到了 How do I get notified when a user opens my iPhone app while in a phone call? 的答案…但这只有在我的应用程序重新打开时状态栏可见的情况下才有效。
我想知道当我返回我的应用程序时如何告诉我正在通话,以便我可以在用户查看我的场景时手动取消隐藏绿色状态栏,否则将隐藏状态栏。
因此我的问题是:是否有一个界面可以告诉我这些信息,当我在 applicationDidBecomeActive: 或通过某种其他类型的通知返回应用程序时可以查询这些信息?
最佳答案
您可以使用 CTCallCenter 查明当前是否有手机通话。您还向此类注册了一个处理程序,以便收到有关单元格状态更改的通知。
CTCallCenter *callCenter = [[CTCallCenter alloc] init];
// If no calls are in progress, the value of this property is nil.
if ([callCenter currentCalls] != nil) {
... call present...
}
[callCenter release];
关于iphone - 当我返回我的应用程序而不检查状态栏框架时,我如何知道电话何时在通话中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11218023/