Ios MFMailComposeViewController赢得';关不上
我创建了一个发送预填充电子邮件的应用程序。电子邮件将完美发送,但邮件生成器不会关闭。下面是我的代码。感谢您的帮助Ios MFMailComposeViewController赢得';关不上,ios,iphone,swift,Ios,Iphone,Swift,我创建了一个发送预填充电子邮件的应用程序。电子邮件将完美发送,但邮件生成器不会关闭。下面是我的代码。感谢您的帮助 @IBAction func sendEmail(_ sender: Any) { let mailComposeViewController = configuredMailComposeViewController() if MFMailComposeViewController.canSendMail() { self.present(mailC
@IBAction func sendEmail(_ sender: Any)
{
let mailComposeViewController = configuredMailComposeViewController()
if MFMailComposeViewController.canSendMail() {
self.present(mailComposeViewController, animated: true, completion: nil)
} else {
self.showSendMailErrorAlert()
}
}
func configuredMailComposeViewController() -> MFMailComposeViewController {
let subject = "subject"
let body = "body"
let composeVC = MFMailComposeViewController()
composeVC.mailComposeDelegate = self
// Configure the fields of the interface.
composeVC.setToRecipients(["example@example.com"])
composeVC.setSubject(subject)
composeVC.setMessageBody(body, isHTML: false)
return composeVC
}
func showSendMailErrorAlert() {
let sendMailErrorAlert = UIAlertView(title: "Could Not Send Email", message: "Your device could not send e-mail. Please check e-mail configuration and try again.", delegate: self, cancelButtonTitle: "OK")
sendMailErrorAlert.show()
}
// MARK: MFMailComposeViewControllerDelegate Method
func mailComposeController(_ controller: MFMailComposeViewController, didFinishWith result: MFMailComposeResult, error: Error?) {
switch result {
case .cancelled:
break
case .saved:
break
case .sent:
break
case .failed:
break
}
controller.dismiss(animated: true, completion: nil)
}
我在这里找到了多种建议,但似乎没有任何效果。您的问题在于:
func configuredMailComposeViewController() -> MFMailComposeViewController {
let subject = "subject"
let body = "body"
let composeVC = MFMailComposeViewController()
composeVC.mailComposeDelegate = self
....
}
您的MFMailComposeViewController
位于configureMainComposeViewController
函数中,一旦终止,它将超出范围。这意味着你的代表也离开了
将您的composeVC变量设置为实例变量,您应该不会有问题。不相关,但您应该在
if
语句中调用configuredMailComposeViewController
。如果无法发送电子邮件,为什么要创建它?添加一个断点以确保调用的是controller.Discouse(动画:true,完成:nil)。