- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在构建一个应用程序,该应用程序可以构造电子邮件并将其呈现在 MFMailComposeViewController 中以供用户发送。当用户发送或取消它时,我希望应用程序以适当的确认屏幕消息进行响应。
我能够撰写电子邮件,关闭撰写屏幕,并且在 IB 中从预撰写 View 到确认 View 有一个命名的 segue。但我无法执行该segue。
那么,我怎样才能更新segue目的地中的短信,然后segue到它。
因为我正在尝试学习 Swift,所以我对了解代码的工作原理非常感兴趣,而不仅仅是获得有效的代码。所以我真的很感谢任何帮助。
工作流程从用户从应用中拍摄照片开始:
func snapPhoto(){
if let cameraConnection = sessionOutput.connection(withMediaType: AVMediaTypeVideo) {
sessionOutput.captureStillImageAsynchronously(from: cameraConnection, completionHandler: { buffer, error in
let myMessage = self.buildEmail()
let myJpg = AVCaptureStillImageOutput.jpegStillImageNSDataRepresentation(buffer)
let mapSnap = (self.myMap == nil) ? nil : UIImagePNGRepresentation(self.myMap!)
let mail = self.setupMail(to: myMessage.to, subject: myMessage.subject, body: myMessage.body, myJpg: myJpg!, mapSnap: mapSnap)
self.presentMailComposer(mail: mail)
}) // close completionHandler
} // close if let cameraConnection
} // close func snapPhoto
它将所有电子邮件内容组合起来并将其传递到:
func presentMailComposer(mail : MFMailComposeViewController) {
if MFMailComposeViewController.canSendMail() {
self.present(mail, animated: true, completion: nil)
} else {
let sendMailErrorAlert = UIAlertController.init(title: "Uh oh!", message: "Unable to send email.", preferredStyle: .alert)
self.present(sendMailErrorAlert, animated: true, completion: nil)
} // close if
} // close presentEmailComposer
然后当用户点击“发送”或“取消”时触发
public func mailComposeController(_ controller: MFMailComposeViewController, didFinishWith result: MFMailComposeResult, error: Error?) {
switch result.rawValue {
case MFMailComposeResult.cancelled.rawValue:
self.performSegue(withIdentifier: "afterEmail", sender: self)
print("Mail cancelled")
case MFMailComposeResult.saved.rawValue:
print("Mail saved")
case MFMailComposeResult.sent.rawValue:
print("Mail sent")
case MFMailComposeResult.failed.rawValue:
print("Mail sent failure: %@", [error!.localizedDescription])
default:
break
}
controller.dismiss(animated: true, completion: nil)
} // close mailCompose
这就是我发现自己陷入困境的地方。我可以访问 MFMailComposeResult,它是正确的,但我不知道如何呈现确认 View ,以便在撰写 View 滑开时可用。
最佳答案
您需要使 View Controller 成为 MFMailComposeViewController 委托(delegate),并重写 didFinishWith 结果方法,并在解雇方法的完成处理程序中切换 MFMailComposeResult 值:
func mailComposeController(_ controller: MFMailComposeViewController, didFinishWith result: MFMailComposeResult, error: Error?) {
controller.dismiss(animated: true) {
// do whatever you need to do after dismissing the mail window
switch result {
case .cancelled: print("cancelled")
case .saved: print("saved")
case .sent:
let alert = UIAlertController(title: "Mail Composer", message: "Mail was successfully sent", preferredStyle: .alert)
alert.addAction(UIAlertAction(title: "Done", style: .default, handler: nil))
self.present(alert, animated: true)
case .failed: print("failed")
}
}
}
关于Swift 3 如何显示基于 MFMailComposeResult 电子邮件屏幕的确认屏幕,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52103937/
我正在尝试将我的一个应用程序从 Obj-C 迁移到 Swift,但我遇到了电子邮件管理方面的问题。 我按小时搜索,但没有找到解决此问题的方法。 基本上,我正在尝试迁移 func mailCompose
我正在构建一个应用程序,该应用程序可以构造电子邮件并将其呈现在 MFMailComposeViewController 中以供用户发送。当用户发送或取消它时,我希望应用程序以适当的确认屏幕消息进行响应
我正在构建一个应用程序,该应用程序可以构造电子邮件并将其呈现在 MFMailComposeViewController 中以供用户发送。当用户发送或取消它时,我希望应用程序以适当的确认屏幕消息进行响应
我正在构建一个应用程序,用于构建电子邮件并将其显示在 MFMailComposeViewController 中供用户发送。当用户发送或取消它时,我希望应用程序以适当的确认屏幕消息进行响应。 我能够撰
我今天早上更新到 XCode 8,并选择将我的 Swift 文件转换为 2.3 而不是 3。我已经解决了所有编译问题,除了下面的代码。只有 MFMailComposeResultSent 案例实际上做
我是一名优秀的程序员,十分优秀!