【问题标题】:MFMailComposeViewController() not dismissed inside UIAlertActionMFMailComposeViewController() 未在 UIAlertAction 内解除
【发布时间】:2021-07-14 07:15:51
【问题描述】:

我在 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)
            
        }
    }  
}


一切正常。发送邮件窗口打开,邮件也被发送,但是当按下“取消”和“发送”按钮时,MFMailComposeViewController() 没有被关闭(必须向下滑动才能关闭它)

可能有什么问题?

【问题讨论】:

    标签: ios swift storekit mfmailcomposeviewcontroller messageui


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 2018-05-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-10-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多