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 документация:
Важное замечание: Интерфейс составления почты сам по себе не настраивается и не должен изменяться вашим приложением.
Это может быть легко истолковано как включающее поведение клавиатуры.