如何在不按MFMailComposeViewController中的发送或取消按钮的情况下关闭键盘?!
感谢您的帮助。
答案 0 :(得分:5)
你能试试吗?
UIWindow* keyWindow = [[UIApplication sharedApplication] keyWindow];
UIView* firstResponder = [keyWindow performSelector:@selector(firstResponder)];
[firstResponder resignFirstResponder];
希望这会有所帮助......
答案 1 :(得分:4)
我遇到了类似的问题:由于某种原因,当应用程序进入后台时,iOS不会忽略MFMailComposeViewController的键盘(当应用程序再次变为活动状态时会发生解除)。然而,如果第一响应者是简单元素(例如textview),则iOS解除键盘。在这种特殊情况下,调用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 :(得分:2)
虽然您可以通过查找第一响应者并在其上调用resignFirstResponder
来查看(除非您在iPad上并且MFMailComposeViewController使用UIModalPresentationFormSheet),但Apple可能会拒绝您的应用。 Quoth the documentation:
重要提示:邮件撰写界面本身不可自定义,您的应用程序不得修改。
这可以很容易地解释为包括键盘的行为。