1

私は現在、登録ビューを備えた iPhone 4 アプリに取り組んでいます。ユーザーは UITextField に焦点を合わせることができ、キーボードがテキストフィールドを覆い隠すのを防ぐためにビューを上に移動するコードがあります。しかし、アプリがバックグラウンド化され、再びフォアグラウンドに戻された場合、キーボードはまだアップしており、テキストフィールドはまだフォーカスされていますが、ビューは元の状態に戻ります。これにより、テキストフィールドが覆われます。

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

アップデート:

- 新しい iOS5 での変更はありますか?

4

2 に答える 2

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];
    }

}

「ホットフィックス」のように見えます)

于 2013-03-21T10:44:27.007 に答える
0

アプリデリゲートの applicationDidEnterBackground で何かを試してみることができます

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

「isFirstResponder」は、キーボードが現在このビューで使用されているかどうかを確認し、使用されている場合は YES を返し、使用されていない場合は NO を返します。

NSLog があるのは、if ステートメントに何が渡されているかを知るためです。

于 2011-04-25T07:37:38.227 に答える