Swift 3.0 迁移后未调用 MFMailComposeViewControllerDelegate 方法

MFMailComposeViewControllerDelegate method not getting invoked after Swift 3.0 migration

我的应用程序具有电子邮件撰写功能,并且在 Swift 2.2 上运行良好。最近我将代码迁移到 Swift 3.0 并遇到了这个问题。在下面分享我的代码片段:

import MessageUI

class ViewController: UIViewController,     MFMailComposeViewControllerDelegate {
 func sendEmail() {
    if MFMailComposeViewController.canSendMail() {
      let mail = MFMailComposeViewController()
      mail.mailComposeDelegate = self
      mail.setToRecipients(["someone@somewhere.com"])
      mail.setSubject("Sending you an in-app e-mail...")
      mail.setMessageBody("<p>You're so awesome!</p>", isHTML: true)
      self.present(mail, animated: true)
    } else {
        //  handle failure
    }
  }

 func mailComposeController(_ controller:    MFMailComposeViewController, didFinishWith result: MFMailComposeResult,  error: Error?) {

    controller.dismiss(animated: true)
  }

 @IBAction func mailClicked(_ sender: AnyObject) {    
    sendEmail()
  }
 }

我已将 mailComposeDelegate 设置为 self,将 _ 放在委托方法中并尝试了在搜索中找到的所有解决方案。但无法解决问题。

非常感谢任何帮助。

这是 Xcode 8 中的一个已知问题。以下解决方法对我有用:

@objc(mailComposeController:didFinishWithResult:error:)
  func mailComposeController(_ controller: MFMailComposeViewController,  didFinishWith result: MFMailComposeResult, error: NSError?) {
 controller.dismiss(animated: true, completion: nil)
}