MFMailComposeViewController Проблема с клавиатурой - PullRequest
9 голосов
/ 02 февраля 2011

Как убрать клавиатуру без нажатия кнопки «Отправить» или «Отмена» в MFMailComposeViewController?!

Спасибо за любую помощь.

Ответы [ 3 ]

5 голосов
/ 08 июня 2011

Можете ли вы попробовать это.

UIWindow* keyWindow = [[UIApplication sharedApplication] keyWindow];
UIView* firstResponder = [keyWindow performSelector:@selector(firstResponder)];
[firstResponder resignFirstResponder];

надеюсь, это поможет ....

4 голосов
/ 20 июня 2013

У меня возникла похожая проблема: по какой-то причине iOS не закрывает клавиатуру MFMailComposeViewController, когда приложение входит в фоновый режим (отклонение происходит, когда приложение снова становится активным). Однако iOS отклоняет клавиатуру, если первый респондент является простым элементом (например, textview). Вызов resignFirstResponder не работал для меня в данном конкретном случае. Поскольку я переключаю окна на applicationBecomeActive (чтобы отобразить экран входа в систему), у меня появилось несколько клавиатур друг над другом (та, что сверху не работает). Я нашел простой обходной путь для отказа от клавиатуры MFMailComposeViewController, когда приложение уходит в отставку активным:

- (void)applicationWillResignActive:(UIApplication *)application
{
    // Workaround: MFMailComposeViewController does not dismiss keyboard when application enters background
    UITextView *dummyTextView = [[UITextView alloc] init];
    [self.window.rootViewController.presentedViewController.view addSubview:dummyTextView];
    [dummyTextView becomeFirstResponder];
    [dummyTextView resignFirstResponder];
    [dummyTextView removeFromSuperview];
    // End of workaround
}

Это неявно подаст в отставку первого респондента, если у нас есть какой-либо viewController, который в настоящее время представлен.

2 голосов
/ 08 июня 2011

Несмотря на то, что вы, вероятно, можете сделать это, найдя тот, который является первым респондентом, и позвонив по нему resignFirstResponder (если только вы не на iPad, а MFMailComposeViewController использует UIModalPresentationFormSheet), Apple может отклонить ваше приложение.Quoth документация :

Важно: Сам интерфейс составления почты не настраивается и не должен изменяться вашим приложением.

Это может быть легко истолковано как поведение клавиатуры.

...