单击取消,保存草稿或删除草稿时无法关闭邮件视图控制器

Wiz*_*zz 4 email xcode swift

我在我的应用程序中实现了一个邮件控制器,但是我无法弄清楚为什么在单击“保存草稿”或“删除草稿”时无法关闭它。该窗口卡在了电子邮件屏幕上,我也无法再次单击“取消”。

@IBAction func emailButtonTapped(_ sender: UIButton) {
    guard MFMailComposeViewController.canSendMail() else {
        if !MFMailComposeViewController.canSendMail() {
            print("Can not send email")
            return
        }
        return
    }


    func mailComposeController(_ controller: MFMailComposeViewController, didFinishWith result: MFMailComposeResult, error: Error?) {
        dismiss(animated: true, completion: nil)
    }

    let mailComposer = MFMailComposeViewController()
    mailComposer.mailComposeDelegate = self

    mailComposer.setToRecipients(["example@example.com"])
    mailComposer.setSubject("Look at this")
    mailComposer.setMessageBody("Hello, this is an email from the app I made.", isHTML: false)

    present(mailComposer, animated: true, completion: nil)
}
Run Code Online (Sandbox Code Playgroud)

Wiz*_*zz 5

我已成功解决此问题,这是一个非常愚蠢的问题!一些代码不在emailButtonTapped函数的外部:

@IBAction func emailButtonTapped(_ sender: UIButton) {
    //guard MFMailComposeViewController.canSendMail() else {
        if !MFMailComposeViewController.canSendMail() {
            print("Can not send email")
            return
        }
    let mailComposer = MFMailComposeViewController()
    mailComposer.mailComposeDelegate = self

    mailComposer.setToRecipients(["example@example.com"])
    mailComposer.setSubject("Look at this")
    mailComposer.setMessageBody("Hello, this is an email from the app I made.", isHTML: false)

    present(mailComposer, animated: true, completion: nil)
}

func mailComposeController(_ controller: MFMailComposeViewController, didFinishWith result: MFMailComposeResult, error: Error?) {
    dismiss(animated: true, completion: nil)
}
Run Code Online (Sandbox Code Playgroud)