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)
}
我的应用程序具有电子邮件撰写功能,并且在 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)
}