10

如何在不按 MFMailComposeViewController 中的发送或取消按钮的情况下关闭键盘?!

谢谢你的帮助。

4

3 回答 3

5

你能试试这个。

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

希望这可以帮助....

于 2011-06-08T05:20:07.527 回答
5

我遇到了类似的问题:由于某种原因,当应用程序进入后台时,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,这将隐式地退出第一响应者。

于 2013-06-20T07:22:43.177 回答
2

虽然您可能可以通过找到哪个视图是第一响应者并调用resignFirstResponder它来做到这一点(除非您在 iPad 上并且 MFMailComposeViewController 使用 UIModalPresentationFormSheet),但 Apple 可能会拒绝您的应用程序。引用文档

重要提示:邮件撰写界面本身不可定制,并且不得由您的应用程序修改。

这可以很容易地解释为包括键盘的行为。

于 2011-06-08T10:23:03.693 回答