我已经在我的一些应用程序中使用了邮件编写器一段时间了,而且最近mailComposeDelegate不再被调用.我不确定这是否与新版本的 Swift有关.所以,我想我会问,看看是否有其他人有类似的问题
以下是我一直使用的代码的精确副本:
func launchFeedback() { guard MFMailComposeViewController.canSendMail() else { return } let emailTitle = "Feedback" let messageBody = "" let toRecipents = ["johnappleseed@icloud.com"] mailComposer.mailComposeDelegate = self mailComposer.setSubject(emailTitle) mailComposer.setMessageBody(messageBody, isHTML: false) mailComposer.setToRecipients(toRecipents) self.show(mailComposer, sender: self) } func mailComposeController(controller: MFMailComposeViewController, didFinishWith result: MFMailComposeResult, error: Error?) { print(error) controller.dismiss(animated: true, completion: nil) }这显然是一个Xcode错误.解决这个问题的唯一方法(在搜索StackOverflow生命一小时后)是这样的:
@objc(mailComposeController:didFinishWithResult:error:) func mailComposeController(_ controller: MFMailComposeViewController, didFinishWith result: MFMailComposeResult,error: NSError?) { controller.dismiss(animated: true) }
请在方法实现之前查看@objc宏.另请注意,最后一个参数必须是NSError类型而不是Apple文档建议的错误(并由Xcode自动完成)