Этот код работает и представляет полностью заполненную форму электронной почты и отправляет электронное письмо очень хорошо, просто не может заставить его отклонить после отправки или попытки отмены.
Я уверен, что упускаю что-то простое. Я также понимаю, что у меня ничего нет на месте, если есть ошибка, но на данный момент он работает и отправляет электронное письмо, но я не могу заставить его отклонить
попробовал несколько предложений, которые я нашел в Интернете, и есть другие способы сделать это, но я пытаюсь понять, почему это не работает, поэтому хочу, чтобы этот способ (или близкий) работал.... xcode 10.2.1
import UIKit
import MessageUI
class ViewController: UIViewController, MFMailComposeViewControllerDelegate {
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
}
@IBAction func sendEmail(_ sender: Any) {
sendEmail()
}
func sendEmail() {
if MFMailComposeViewController.canSendMail() {
let mail = MFMailComposeViewController()
mail.mailComposeDelegate = self
mail.setToRecipients(["[email protected]"])
mail.setSubject("test ")
mail.setPreferredSendingEmailAddress("[email protected]")
present(mail, animated: true)
} else {
//show failure alert
}
func mailComposeController(_ controller: MFMailComposeViewController, didFinishWith result: MFMailComposeResult, error: Error?) {
controller.dismiss(animated: true, completion: nil)
}
}
компилирует и отправляет электронную почту нормально, просто не могу отключить контроллер
Почему у вас есть два метода sendEmail?
Здорово! Я знал, что упускаю что-то маленькое.
только что переехал
Все методы делегата должны быть в области класса, в вашем текущем коде didFinishWith
, который должен уменьшить вложенность почты внутри sendEmail
import UIKit
import MessageUI
class ViewController: UIViewController, MFMailComposeViewControllerDelegate {
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
}
@IBAction func sendEmail(_ sender: Any) {
sendEmail()
}
func sendEmail() {
if MFMailComposeViewController.canSendMail() {
let mail = MFMailComposeViewController()
mail.mailComposeDelegate = self
mail.setToRecipients(["[email protected]"])
mail.setSubject("test ")
mail.setPreferredSendingEmailAddress("[email protected]")
present(mail, animated: true)
} else {
//show failure alert
}
}
func mailComposeController(_ controller: MFMailComposeViewController, didFinishWith result: MFMailComposeResult, error: Error?) {
controller.dismiss(animated: true, completion: nil)
}
}
Не помещайте
didFinishWith
внутрь другой функции.