This is sample code:
import UIKit
import MessageUI
class ViewController: UIViewController, MFMailComposeViewControllerDelegate {
@IBAction func showEmail(
You're trying to dismiss self
instead of the MFMailComposeViewController
(which isn't self).
Replace:
self.dismissModalViewControllerAnimated(true)
with:
controller.dismissViewControllerAnimated(true, completion: nil)
in the delegate method.
Seems to be bug in iOS 8. Same problem exist in Objective-C also.
Bug has been resolved. Everything is working as expected in iOS 8.1+ and Xcode 6.1+
The following fires and works fine
extension MainViewController: MFMailComposeViewControllerDelegate {
func mailComposeController(controller: MFMailComposeViewController!, didFinishWithResult result: MFMailComposeResult, error: NSError!) {
switch result.value {
case MFMailComposeResultCancelled.value:
NSLog("Mail cancelled")
case MFMailComposeResultSaved.value:
NSLog("Mail saved")
case MFMailComposeResultSent.value:
NSLog("Mail sent")
case MFMailComposeResultFailed.value:
NSLog("Mail sent failure: %@", [error.localizedDescription])
default:
break
}
self.dismissViewControllerAnimated(true, completion: nil)
}
}