使用 Document Controller presentOptionsMenuFromBarButtonItem: 时如何关闭 mailComposeController?

How do I dismiss mailComposeController when using Document Controller presentOptionsMenuFromBarButtonItem:?

我已经(成功地)实施了

mailComposeController:didFinishWithResult:error:

在我的应用程序的其他部分关闭邮件撰写视图的方法,用户点击我提供的特定图标来发送电子邮件。我知道我必须设置委托并处理用户的 "didFinishWithResult" 操作。 现在在另一部分,我打开一个文档并使用

UIBarButtonSystemItemAction, Document controller, and presentOptionsMenuFromBarButtonItem: method

我允许用户将文档作为 PDF 通过电子邮件发送。现在 PDF 已成功附加到邮件中,并且可以在输入电子邮件地址后发送。我的问题是邮件发送后,撰写视图没有被关闭。也不会在取消 draft/save 草案选项后被驳回。我想我可能需要

的实现
- (void)mailComposeController:(MFMailComposeViewController *)controller didFinishWithResult:(MFMailComposeResult)result error:(NSError *)error 

但是这个方法我好像打不中。 (并且在使用 presentOptionsMenuFromBarButtonItem: 时不应该自动处理这个问题吗?)。 我可能错误地设置了代表。任何人都可以说明是否有一些内置的方式应该处理这个问题,或者应该如何为此设置委托。

如果我没猜错的话,我也遇到过类似的问题。

您需要将其放在 ViewDidLoad 之后:

// MARK: MFMailComposeViewControllerDelegate Method
func mailComposeController(controller: MFMailComposeViewController, didFinishWithResult result: MFMailComposeResult, error: NSError!) {
     self.dismissViewControllerAnimated(true, completion: nil)
}//end func mailComposeController

我尝试了很多方法,包括 Sebah 的建议。这些都不起作用。 这对 iOS 7.x 工作正常,但从 iOS 8 开始它给了我这个问题。当我从 xCode 5 移动到 6 时,它终于自行解决了。我猜是一些兼容性问题。 xCode 5 在 iOS 7.x 之前都可以正常使用,但对于 iOS 8 及更高版本,我想我必须强制使用 xCode 6。 这是一年前的事了,当时使用 xCode 6 并打包您的应用不是强制性的,因此我们一直使用 xCode 5.