Приложение iPhone, возвращающееся на передний план, смещает вид назад к исходному, и клавиатура все еще видна - PullRequest
1 голос
/ 08 декабря 2010

В настоящее время я работаю над приложением для iPhone 4 с видом регистрации.Пользователи могут сосредоточиться на UITextField, и у меня есть код, который сместит представление вверх, чтобы клавиатура не закрывала текстовое поле.Но если приложение фоново расположено и снова выведено на передний план, клавиатура все еще находится в верхнем положении, текстовое поле все еще находится в фокусе, но теперь представление смещено обратно в исходное состояние.Это скрывает текстовое поле.

Что происходит?Как сделать так, чтобы вид оставался на месте, или скрыть клавиатуру, когда приложение возвращается на передний план?

ОБНОВЛЕНИЕ:

- Есть ли какие-нибудь изменения для этого на новой iOS5?

Ответы [ 2 ]

0 голосов
/ 21 марта 2013

У меня есть следующее решение:

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

}

Похоже на "исправление")

0 голосов
/ 25 апреля 2011

вы можете попробовать сделать что-то в applicationDidEnterBackground в вашем делегате приложения, например

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

isFirstResponder проверяет, используется ли в данный момент клавиатура в этом представлении, и возвращает YES, если это так, и NO, если нет.

NSLog существует только для того, чтобы вы знали, что передается в оператор if.

...