2015-10-19 47 views
-1

有沒有一種方法可以檢測目標電話上是否正在打電話?在這種情況下,您會注意到許多視圖向下移動,因此我想知道何時。檢測電話目前的電話iphone objective c

+2

我假定你的意思出現的綠色旗幟。不要忘記使用導航時有藍色,錄製音頻時有紅色。所以你不只是想在電話中檢測。爲什麼你需要知道這個呢?如果你正確地做你的用戶界面,它會自動調整到較小的屏幕尺寸。 – rmaddy

+0

我正在製作自定義相機視圖。所以我一直在做大量的硬編碼的黑客行爲......例如,你認爲我可以通過將事物置於h * .5來實現,然後h就會進行調整?順便說一句h是self.view.frame.size.height ...我想這是有道理的。我只是不確定是什麼樣的轉變電話等做到這一點。 –

+0

有沒有什麼辦法可以檢測是否在任何時候(布爾檢查),而不是當電話通過?許多需要知道這一點的視圖控制器尚未被合併 –

回答

1

您不應該使用狀態欄框檢測呼叫。相反,你可以檢測電話與NSNotification這樣

在你viewDidLoad將這個:

#import <CoreTelephony/CTCall.h> 

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(callReceived:) name:CTCallStateIncoming object:nil]; 
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(callEnded:) name:CTCallStateDisconnected object:nil]; 
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(callConnected:) name:CTCallStateConnected object:nil]; 

而且不要忘了添加CoreTelephony.framework

+0

您不想這樣做。 – rmaddy

-1

正如rmaddy所解釋的那樣,如果您試圖捕捉狀態欄框的變化,檢測電話並不是最好的方法。

你可以做的是實現方法的應用程序委託的- (void)application:(UIApplication *)application willChangeStatusBarFrame:(CGRect)newStatusBarFrame- (void)application:(UIApplication *)application didChangeStatusBarFrame:(CGRect)oldStatusBarFrame或監聽UIApplicationWillChangeStatusBarFrameNotificationUIApplicationDidChangeStatusBarFrameNotification通知。