0

我正在使用 UIApplicationWillChangeStatusBarFrameNotification 来判断状态栏何时会更改,这确实有助于我确定正在进行的呼叫何时消失,并且行为如我所愿。

但是,我的应用程序中有一个场景是全屏显示,其中包括隐藏状态栏……除了我不想在通话时隐藏状态栏。

我的理解是,这个状态栏首先出现的唯一方法是如果我(a)接到电话,然后(b)返回我的应用程序。

所以……当我接到电话后返回我的应用程序时……没有绿色状态栏。(fwiw,当我点击我的应用程序以使状态栏和导航栏和标签栏重新出现时,确实会出现绿色状态栏,所以并不是它完全消失了;只是因为我告诉它隐藏而隐藏。在模拟器,执行“硬件->切换通话状态栏”按我的意愿工作,但我认为这种行为在现实世界中不会真正以这种方式发生。)

我找到了当用户在通话中打开我的 iPhone 应用程序时如何获得通知的答案?…但这只有在我的应用程序重新打开时状态栏可见时才有效。

我想知道当我返回我的应用程序时如何告诉我正在通话,以便我可以在用户查看我的场景时手动取消隐藏绿色状态栏,否则会隐藏状态栏。

因此,我的问题是:是否有一个界面可以告诉我这些信息,当我在 applicationDidBecomeActive: 中返回应用程序时可以查询这些信息:或通过某种其他类型的通知?

4

1 回答 1

2

您可以使用 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];
于 2012-06-27T01:46:26.573 回答