2012-01-02 8 views
3

私のアプリでは、携帯電話を水平方向に回転させたときにナビゲーションバーが44pxから32pxに縮小されないようにしようとしています。私は、ビューが回転しているときにnavigationBarsフレームを設定し、viewDidAppearでも設定することで、これを達成できました。しかし、ホームボタンを押してアプリを終了してからアプリを再入力すると、ナビゲーションバーはまだ縮小されます。そこで、UIApplicationDidBecomeActiveNotificationを検出するための通知を実装し、そのメソッドでnavigationBarフレームの高さを44pxにリセットしました。しかし、何かが私のビューのフレームをリセットしている呼び出されているので、それは動作しません。 UIApplicationDidBecomeActiveNotificationが起動してviewcontrollersフレームをリセットした後に何が呼び出されるのか誰も知っていますか?UIApplicationDidBecomeActiveNotificationがトリガーされた後に呼び出される内容は?

+0

あなたのビューはペン先から構成されていますか? – kocodude

+0

@kocodude - それはプログラムで構築されていません。 –

答えて

0

アプリケーションでは、どのクラスも異なる通知のための「オブザーバー」になることができます。 View Controllerを作成するときに、UIApplicationDidBecomeActiveNotificationのオブザーバとして登録し、その通知がアプリケーションに送信されるときに呼び出すメソッドを指定できます。

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(myMethod:) name: UIApplicationDidBecomeActiveNotification object:nil]; 

あなたの必要性につきとしてViewWillDisappear/viewDidDisAppear/DEALLOCで削除オブザーバー:

[[NSNotificationCenter defaultCenter] removeObserver:self]; 
+0

はい、私はこれをしました。ビューが非アクティブに戻った後、フレームが何らかの形でリセットされたり、レイアウトが再構成されたりして、正確に何が起こっているのか疑問に思っています。 –

+0

アプリケーションがアクティブになったときに通知をポストし、その通知をキャッチするためにオブザーバーを追加して、その内部で定義したタスクが機能します。それは非常に簡単です。以下のデベロッパーリンクを参照して、通知に関する情報を参照できます。http://developer.apple.com/library/mac/#documentation/Cocoa/Reference/Foundation/Classes/NSNotificationCenter_Class/Reference/Reference.html – rishi

+0

はい、わかります。私は、それを除いて、アプリケーションがアクティブになると、何か他のものが呼び出され、nav barフレームをリセットすると言っています。 –

0

私はあなたがキー値のオブザーバーを経由してオブザーバを添付する場合は、何かがあることを確認することができ、同じ問題を抱えていますUIApplicationDidBecomeActiveNotificationの後に呼び出されます。