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 документация:

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

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