2012-01-22 46 views
0

我有一個應用程序,它可以通過[UIScreen mainScreen].brightness = newBrightness來改變屏幕亮度,並且當用戶完成使用時,我想恢復到之前的狀態。applicationDidEnterBackground和applicationWillResignActive的替代品?

我已經試過這兩個委託方法:

  • - (void)applicationDidEnterBackground:(UIApplication *)application
  • - (void)applicationWillResignActive:(UIApplication *)application

但不是很成功。我懷疑我的應用程序必須在前臺來改變亮度?當我改變didEnterBackgroundMethod的亮度時,它根本沒有效果。當我使用willResignActive確實恢復亮度,如果我切換到另一個應用程序,但它沒有效果時,我按主頁按鈕。

是否有任何通知或委託方法執行之前該應用程序離開前臺?

回答

0

這似乎也發生在別人身上:請參閱S.O. post

只有這樣,周圍似乎忘記了setBrightness,並通過覆蓋在您的視圖中的黑色半透明模擬它...

OLD答:

當你按下willResignActive也應該叫應用程序進入後臺狀態之前的主頁按鈕。

調用此方法可讓您的應用程序知道它即將從活動狀態移至非活動狀態。對於某些類型的臨時中斷(例如來電或SMS消息)或用戶退出應用程序並開始轉換到後臺狀態時,可能會發生這種情況。處於非活動狀態的應用程序將繼續運行,但不會將傳入的事件分派給響應方。

這也是我見證的行爲。所以,我的猜測(但它只是一個猜測)是你的應用程序沒有設置爲支持背景,所以當按下home按鈕時,它會被終止。在這種情況下,不調用applicationDidEnterBackground

我會建議檢查項目中的info.plist文件UIApplicationExitsOnSuspend或「選擇應用程序不在後臺運行」鍵。此外,您可以嘗試在這些函數中放置一些斷點(或NSLog跟蹤),並檢查它們是否按預期有效調用。

+0

事件總是被調用,我已經通過調試進行了確認。問題是改變亮度的API沒有任何效果,可能是因爲已經發生了到後臺的轉換。 –