MFMailComposeViewController()未在UIAlertAction内被解除



我在UIAlertController中打开了MFMailComposeViewController,代码如下:

import StoreKit
import MessageUI
class SettingsListViewController: UIViewController, MFMailComposeViewControllerDelegate, UINavigationControllerDelegate {
// Some code adding the UITableView and etc
// ...
}
private extension SettingsListViewController {

func didSelectShareCell(shareSectionCell: ShareSectionCell, _ tableView: UITableView, cellForRowAt indexPath: IndexPath) {
switch shareSectionCell {
// Some other cases...
case .rate:
let actionSheet = UIAlertController(title: "Feedback", message: "Are you enjoing the app?", preferredStyle: .alert)

actionSheet.addAction(UIAlertAction(title: "Dismiss", style: .cancel, handler: nil))

actionSheet.addAction(UIAlertAction(title: "Yes, i love it", style: .default, handler: { action in
SKStoreReviewController.requestReview()
}))

actionSheet.addAction(UIAlertAction(title: "No, this sucks", style: .default, handler: { action in
guard MFMailComposeViewController.canSendMail() else {
// Alert info user
return
}

let composer = MFMailComposeViewController()
composer.mailComposeDelegate = self
composer.delegate = self
composer.setToRecipients(["my mail"])
composer.setSubject("i'm mad")
composer.setMessageBody("Hey, i love your app but...", isHTML: false)

self.present(composer, animated: true)

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

}))

present(actionSheet, animated: true)

}
}  
}

一切都很好。"发送邮件"窗口打开,邮件也在发送,但当按下"取消"&amp发送按钮MFMailComposeViewController((未被解除(必须向下滑动才能解除(

可能出了什么问题?

将此委托放在函数外部和控制器类内部。同样,像这样关闭controller.dismiss(animated: true)

private extension SettingsListViewController {
func mailComposeController(_ controller: MFMailComposeViewController,
didFinishWith result: MFMailComposeResult, error: Error?) {
controller.dismiss(animated: true)
}
}

最新更新