我在MFMailComposeViewControllerDelegate函数中遇到了问题。
func mailComposeController(_ controller: MFMailComposeViewController, didFinishWith result: MFMailComposeResult, error: Error?) {
controller.dismiss(animated: true, completion: nil)
}
警告信息如下:
实例方法 'mailComposeController(:didFinishWith:error:)' 几乎匹配协议 'MFMailComposeViewControllerDelegate' 的可选要求 'mailComposeController(:didFinishWith:error:)'。
将 'mailComposeController(_:didFinishWith:error:)' 私有化以消除此警告
我需要在点击取消后返回用户到应用程序并关闭 MFMailComposeViewController,但是该函数未被触发。
是的,我已经添加了委托 composeVC.mailComposeDelegate = self
如果有人遇到类似的问题,我会感激您的帮助。谢谢
编辑
仅当我设置语言为 Swift 4 时才会出现此行为。 我刚刚回到了之前的几个提交,并且在 Swift 3.2 中完美地运行。
基本上,这就是代码:
class TechSupportVC: UIViewController, MFMailComposeViewControllerDelegate {
let composeVC = MFMailComposeViewController()
override func viewDidLoad() {
super.viewDidLoad()
composeVC.mailComposeDelegate = self
composeVC.setToRecipients(["desiredEmail@gmail.com"])
composeVC.setSubject("My message")
}
func mailComposeController(_ controller: MFMailComposeViewController, didFinishWith result: MFMailComposeResult, error: Error?) {
controller.dismiss(animated: true, completion: nil)
}
@IBAction func sendPressed(_ sender: Any) {
guard MFMailComposeViewController.canSendMail() else {
showMailServiceErrorAlert()
return
}
composeVC.setMessageBody("Test credentials: \(firstAndLastNameTextField.text!)\nPhone: \(numberTextField.text!)\n\n\(messageTextView.text!)", isHTML: false)
self.present(composeVC, animated: true, completion: nil)
}
}