Избавьтесь от клавиатуры из applicationDidEnterBackground в AppDelegate.m - PullRequest
1 голос
/ 07 февраля 2012

У меня есть приложение с Textfields в моем файле MainViewController.m.В этом файле также есть вид прокрутки, поэтому, когда появляется клавиатура, вид прокручивается, чтобы пользователь мог видеть текстовое поле.Клавиатура закрывается, когда пользователь нажимает на экран.Все работает хорошо, за исключением случая, когда пользователь нажимает кнопку «Домой», чтобы поместить приложение в фоновом режиме, а затем возвращается к нему.В этом случае клавиатура все еще работает, но мое прокручиваемое окно недоступно со скрытыми текстовыми полями.В идеале я бы хотел, чтобы клавиатура также была отклонена.

Изучив ее, все вызываемые методы находятся в файле AppDelegate.m (к сожалению, он не входит в ViewDidLoad или любой из View.методы жизненного цикла).Как удалить клавиатуру из applicationDidEnterBackground в файле AppDelegate.m?Я новичок - я попытался создать функцию + dismisskeyboard в моем файле MainViewController и вызвать ее из Appdelegate, но все мои текстовые поля являются переменными экземпляра, и это не работает.Я также попытался создать текстовое поле в моем файле AppDelegate, а затем сделать это -

[_ someField становитьсяFirstResponder];

[_ someField resignFirstResponder];

но это также не работает ... Я не могу понять, как связать что-либо на моей раскадровке со свойством AppDelegate someField.

Может кто-нибудь предложить правильный подход к решениюэта проблема?

1 Ответ

3 голосов
/ 07 февраля 2012

Просто зарегистрируйте метод для UIApplicationDidEnterBackgroundNotification в вашем классе MainViewController и отклоните вашу клавиатуру там. например
Зарегистрироваться для уведомления

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(receivedNotification:) name:UIApplicationDidEnterBackgroundNotification object:nil];


затем добавьте этот метод

- (void) receivedNotification:(NSNotification *) notification
{
    [txtFld resignFirstResponder];
}
...