MFMailComposeViewControllerDelegate not being called

六眼飞鱼酱① 提交于 2019-12-02 00:37:13

MFMailComposeViewController is a subclass of UINavigationController, which already has a delegate property to handle navigation changes.

MFMailComposeViewController has another property called mailComposeDelegate, which is the property you are looking for.

Also, you should create the controller before setting the delegate.

Make sure you use

controller.mailComposeDelegate = self

Not this one

controller.delegate = self
mailCVP.delegate = self
mailCVP = configureMailComposeVC()

This code sets the delegate but then creates a new instance, which doesn't have a delegate...

Note that there is also no point in creating the VC instance if MFMailComposeViewController.canSendMail returns false.

First of all use

mailCVP.mailComposeDelegate = self

instead of

mailCVP.delegate = self

Moreover, in case of Swift 3, delegate method is somehow updated which is:

func mailComposeController(_ controller: MFMailComposeViewController, didFinishWith result: MFMailComposeResult, error: Error?){
    controller.dismiss(animated: true, completion: nil)
}
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!