MFMailComposeViewController in Swift does not dismiss

后端 未结 3 542
我寻月下人不归
我寻月下人不归 2020-12-17 20:57

This is sample code:

import UIKit
import MessageUI

class ViewController: UIViewController, MFMailComposeViewControllerDelegate {

@IBAction func showEmail(         


        
相关标签:
3条回答
  • 2020-12-17 21:32

    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.

    0 讨论(0)
  • 2020-12-17 21:36

    Seems to be bug in iOS 8. Same problem exist in Objective-C also.

    0 讨论(0)
  • 2020-12-17 21:44

    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)
        }
    }
    
    0 讨论(0)
提交回复
热议问题