MFMailComposeViewController Проблема с клавиатурой

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

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

3 ответа

Решение

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

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

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

У меня возникла похожая проблема: по какой-то причине 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, который в настоящее время представлен.

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

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

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

Другие вопросы по тегам