【问题标题】:MFMailComposeViewController Keyboard IssueMFMailComposeViewController 键盘问题
【发布时间】:2011-06-19 20:14:49
【问题描述】:

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

感谢您的帮助。

【问题讨论】:

  • 出于好奇,您为什么要这样做?
  • 我的应用程序由于使用了 7KV7 建议的代码,今天被拒绝了。只是让您知道不要在应用商店的应用中使用它。

标签: iphone mfmailcomposeviewcontroller iphone-softkeyboard


【解决方案1】:

你能试试这个吗?

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

希望这会有所帮助....

【讨论】:

  • 请注意,UIWindow 的 firstResponder 方法是一个私有 API,因此如果您将其提交到 App Store,使用它可能会导致 Apple 拒绝您的应用,并且可能会在将来的版本中停止工作,恕不另行通知如果是 iOS。
【解决方案2】:

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

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

这很容易被解释为包括键盘的行为。

【讨论】:

    【解决方案3】:

    我遇到了类似的问题:由于某种原因,当应用程序进入后台时,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
    }
    

    如果我们有任何当前正在呈现的视图控制器,这将隐式地退出第一响应者。

    【讨论】:

    • 谢谢!由于在 iOS >= 6 (_UIRemoteView) 中引入了远程视图,这似乎是关闭 MFMailComposeViewController(或 SLComposeViewController)键盘的唯一有效方法
    • 你是绝对正确的 - 谢谢你指出这一点。为了澄清这一点:我的假设是,当远程视图在单独的进程中运行时,您不能将它们带走键盘,但是通过请求第一响应者获得应用程序控制的视图,您会再次隐式接管键盘的控制权。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多