2012-01-22 12 views
0

私は[UIScreen mainScreen].brightness = newBrightnessで画面の明るさを変えるアプリを手に入れました。そして、ユーザーがそれを使用し終わったときの明るさに元の状態に戻したいと思います。applicationDidEnterBackgroundとapplicationWillResignActiveの代替ですか?

は、私は、これら二つのデリゲートメソッドを試してみた:

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

しかし、多くの成功なし。私は明るさを変更するために私のアプリが前景になければならないと思う? didEnterBackgroundMethodの明るさを変更しても効果はありません。 willResignActiveを使用すると、になりますが、別のアプリに切り替えると明るさに戻りますが、ホームボタンを押しても効果はありません。

の前にのアプリがフォアグラウンドを離れる前に、通知またはデリゲートメソッドが実行されていますか?

答えて

0

他人にも同様のことが起こりそうです。S.O. postをご覧ください。

だけの方法で回避、およそsetBrightnessを忘れて、あなたのビューの上に黒の半透明を重ねることによって、それをシミュレートしているようだ...

OLD ANSWER:あなたが押したとき

willResignActiveも呼ばれるべきアプリケーションのホームボタンが背景の状態になります。

このメソッドは、アクティブ状態から非アクティブ状態に移行しようとしていることをアプリケーションに知らせるために呼び出されます。これは、特定のタイプの一時的な中断(着信電話やSMSメッセージなど)や、ユーザーがアプリケーションを終了してバックグラウンド状態への移行を開始したときに発生します。非アクティブ状態のアプリケーションは引き続き実行されますが、受信イベントを応答者にディスパッチしません。

これは私の目撃者の行動です。だから、私の推測(しかしそれはちょうど推測です)は、あなたのアプリがバックグラウンドをサポートするように設定されていないので、ホームボタンを押すと終了します。この場合、applicationDidEnterBackgroundは呼び出されません。

UIApplicationExitsOnSuspendのプロジェクトのinfo.plistファイルを確認するか、[アプリケーションをバックグラウンドで実行しない]を選択することをお勧めします。

さらに、これらの関数にいくつかのブレークポイント(またはNSLogトレース)を入れて、効果的に期待どおりに呼び出されているかどうかを確認することができます。

+0

イベントは常に呼び出されていますが、デバッグでこれを確認しました。問題は、明るさを変更するAPIには何の効果もありません。おそらく、背景への移行が既に発生しているためです。 –

関連する問題