2010-12-08 14 views
1

私は現在、登録ビューのiPhone 4アプリケーションで作業しています。ユーザーはUITextFieldにフォーカスすることができ、キーボードがテキストフィールドを覆い隠すのを防ぐために、ビューを上にシフトするコードがあります。しかし、アプリケーションがバックグラウンドで再びフォアグラウンドに戻った場合、キーボードはまだ上にあり、テキストフィールドにはまだフォーカスがありますが、ビューは元の状態に戻されます。これは、テキストフィールドをカバーします。iPhoneアプリがフォアグラウンドに戻って元の状態に戻り、キーボードがまだ表示されています

何が起こっているのですか?アプリをフォアグラウンドに戻したときに、ビューを固定または非表示にするにはどうすればよいですか?

UPDATE:新しいiOS5を上このため

-any変化?

答えて

0

あなたは、キーボードは現在、このビューで使用されているかどうかを確認するために

NSLog(@"%@", [self.viewController.YOURTEXTFIELD isFirstResponder]); 
if ([self.viewController.YOURTEXTFIELD isFirstResponder]) { 
    [self.viewController.YOURTEXTFIELD resignFirstResponder]; 
} 

のようなアプリデリゲートに「isFirstResponder」のチェックをapplicationDidEnterBackgroundで何かを試してみて、それがある場合はYESを返す可能性があり、NO、それならばそうではありません。

NSLogには、if文に何が渡されているかが分かります。

0

私は次の解決策ました:AppDelegate

- (void)applicationDidBecomeActive:(UIApplication *)application 
{ 

    // 1. get access to ViewController which is on top 
    // In my case, I have navigation controller in root 

    UIViewController* current_controller = [self.rootNavController.viewControllers lastObject]; 

    // 2. loop all uitextfield. 
    for (UITextField* o_txt in [current_controller.view subviews]) { 
     [o_txt resignFirstResponder]; 
    } 

} 

を "ホットフィックス" のようなのを見て)

関連する問題