如何在不按 MFMailComposeViewController 中的发送或取消按钮的情况下关闭键盘?!
谢谢你的帮助。
如何在不按 MFMailComposeViewController 中的发送或取消按钮的情况下关闭键盘?!
谢谢你的帮助。
你能试试这个。
UIWindow* keyWindow = [[UIApplication sharedApplication] keyWindow];
UIView* firstResponder = [keyWindow performSelector:@selector(firstResponder)];
[firstResponder resignFirstResponder];
希望这可以帮助....
我遇到了类似的问题:由于某种原因,当应用程序进入后台时,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,这将隐式地退出第一响应者。
虽然您可能可以通过找到哪个视图是第一响应者并调用resignFirstResponder
它来做到这一点(除非您在 iPad 上并且 MFMailComposeViewController 使用 UIModalPresentationFormSheet),但 Apple 可能会拒绝您的应用程序。引用文档:
重要提示:邮件撰写界面本身不可定制,并且不得由您的应用程序修改。
这可以很容易地解释为包括键盘的行为。