2011-10-27 18 views
3

キーボードが表示されているときにメインビューのサイズを変更してログイン画面でユーザー名/パスワードフィールドを移動するアプリケーションがあります。アプリケーションがサスペンドから復帰したときにキーボードを隠す

問題は、キーボードが表示されている間にアプリケーションを一時停止して(ホームボタンをクリックして)アプリケーションを元に戻すと、NIBごとに表示サイズがリセットされますが、キーボードはそれでも "フォーム"の一部がキーボードによって隠されることを意味します。

私のアプリケーションデリゲートでapplicationDidBecomeActiveが呼び出されたことを知っていますか?または、アプリケーションが一時停止状態から復帰したときにキーボードを非表示にする最良の方法はありますか?

ありがとうございます!

+0

[ビューからキーボードを解除するにはどうすればいいですか?](http://stackoverflow.com/questions/5014674/how-to-dismiss-the-keyboard-from-the-view) – millimoose

+0

Do not doそれが重複だと思う。 'resignFirstResponder'を呼び出すと、コントロールがアプリケーションに返され、' viewWillAppear'のようなものが呼び出されたときにそれを行う可能性があります。アプリが停止から復帰したときに、私のviewcontrollerのメソッドが呼び出された場合、 'resignFirstResponder'が動作する可能性があります。私が欠けているのは、コントローラのコンテキスト内で、アプリが停止状態から復帰したことを通知する方法です。 –

答えて

3

UIApplicationDidEnterBackgroundNotification通知(addObserver:selector:name:object:セレクタ経由で)NSNotificationCenterを購読し、[element resignFirstResponder]に電話してください。

キーボードが常に隠れているためにアニメーションが出るので、スムーズに下がるかどうかはわかりませんが、少なくともそれは完了します。

3

私はあなたがviewWillAppear呼び出しで、あなたのビューコントローラでNSNotificationCenter

を使用してこれを達成することができるでしょうと思う:

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(appWasResumed) name:UIApplicationWillEnterForegroundNotification object:nil]; 

とメソッドを実装します。

-(void) appWasResumed 
{ 
    [textField1 resignFirstResponder]; 
    //If you are changing positions of items, you might want to do that here too. 
} 

とI残りは自動的に処理されるべきだと考えます。

それは自動的に処理されていない場合applicationDidBecomeActiveまたはapplicationWillEnterForegroundであなたのAppDelegateにこれを追加してみてください:

[[NSNotificationCenter defaultCenter] postNotificationName:UIApplicationWillEnterForegroundNotification object:nil]; 

私はNSNotificationCenter多くを使用していませんでしたので、構文の一部が間違っている可能性があります。確認のため、上部にあるリンクを確認してください。

関連する問題