2010-08-06 98 views
9

HIG(第47頁)說我必須能夠處理在電話或錄音過程中出現的雙高度狀態欄。如何檢測雙高度狀態欄?

我到底該如何處理這種情況?

我真的只有一個屏幕,其中帶有工具欄的鍵盤在雙高度狀態欄顯示時位於文本框下方 - 在其他屏幕上,事情只是有點縮小但可用。

如果我可以檢測到雙高度狀態欄存在,我可能可能調整文本框的位置或使它們暫時更短,但可以檢測雙高度狀態欄是否在那裏?

編輯:也許如果有一種方式來獲得已知事物的絕對座標,如導航欄,並且如果它是+20像素關閉,我會假設雙高度狀態欄存在。思考?

和次要問題,如果這個(或任何東西)的作品,我只是想用

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

隱藏常規狀態欄,但我並不想隱瞞都 - 基本上是一個偷懶的方法不必觸摸我的任何一個屏幕 - 如果雙重存在,通過隱藏常規狀態欄再次使它成爲一個單獨的屏幕。上面的代碼會隱藏兩者嗎?

回答

16

可以監視UIApplicationDelegate這些回調:

  • 應用:willChangeStatusBarFrame:

  • 應用:didChangeStatusBarFrame:

而且很容易在iPhone上測試此模擬器:硬件 - >切換通話狀態欄

根據您的情況,您的視圖及其中的內容可以自動調整大小以適應空間 - 檢查Interface Builder中各種對象上的檢查器窗口的視圖大小區域

+0

這是否會解決用戶處於打電話或在錄音的過程中,THEN進入我的應用程序?或者它只會在應用中監控一次更改? – 2010-08-06 02:20:25

+0

好的,也許你可以檢查UIApplicationStatusBarFrameUserInfoKey – 2010-08-06 03:37:15

+0

感謝指出我在正確的方向。在進入應用程序之前處理呼叫始發,在某些viewDidLoad的我只是檢查狀態欄框架的大小 - 如果超過20,相應地假定正在進行調用和大小視圖。我在代表遇到問題。當方法放在我的AppDelegate中時,它會觸發,而不是在我需要的類中時,即使我在該類中採用UIApplicationDelegate,也不知道如何處理在每個類中開始或結束的調用 - 從在我想改變視圖的類的AppDelegate中的方法? – 2010-08-06 18:38:14