我的 MFMailComposeViewControllerDelegate 函数有问题。
func mailComposeController(_ controller: MFMailComposeViewController, didFinishWith result: MFMailComposeResult, error: Error?) {
controller.dismiss(animated: true, completion: nil)
}
警告说
实例方法'mailComposeController(:didFinishWith:error:)' 几乎匹配可选要求 'mailComposeController(协议“MFMailComposeViewControllerDelegate”的 :didFinishWith:error:)'
将“mailComposeController(_:didFinishWith:error:)”设置为私有以消除此警告
我需要将用户返回到应用程序并在单击取消后关闭 MFMailComposeViewController 并且不会触发此功能。
是的,我添加了代表composeVC.mailComposeDelegate = self
如果有人遇到类似的问题,我将不胜感激。谢谢
EDIT
仅当我将语言设置为 Swift 4 时,才会发生这种行为。我刚刚返回了几次提交,它在 Swift 3.2 上运行得非常好
基本上,这是代码:
class TechSupportVC: UIViewController, MFMailComposeViewControllerDelegate {
let composeVC = MFMailComposeViewController()
override func viewDidLoad() {
super.viewDidLoad()
composeVC.mailComposeDelegate = self
composeVC.setToRecipients(["[email protected] /cdn-cgi/l/email-protection"])
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)
}
}