bev*_*omb 4 ios swift swift3 mfmailcomposeviewcontroller
我已经在我的一些应用程序中使用了一段时间的mail composer,最近,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)
}
Run Code Online (Sandbox Code Playgroud)
这显然是一个Xcode错误。解决此问题的唯一方法(在搜索了StackOverflow寿命一小时后)是:
@objc(mailComposeController:didFinishWithResult:error:)
func mailComposeController(_ controller: MFMailComposeViewController, didFinishWith result: MFMailComposeResult,error: NSError?) {
controller.dismiss(animated: true)
}
Run Code Online (Sandbox Code Playgroud)
在方法实现之前,请参见@objc宏。还要注意,最后一个参数必须是NSError类型,而不是Apple文档所建议的Error(并由Xcode自动完成)
默认情况下,Swift 3 不再具有未命名的第一个参数(请参阅此提案),因此您需要在函数中添加下划线:
func mailComposeController(_ controller: MFMailComposeViewController, didFinishWith result: MFMailComposeResult, error: Error?) {
print(error)
controller.dismiss(animated: true, completion: nil)
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2660 次 |
| 最近记录: |