2017-01-09 4 views
1

私は自分のアプリでメールを送信するためにMessageUIとMFMailComposeViewControllerを実装しようとしています。プロセスを開始してもメールクライアントから実際に離れることができない限り、すべてうまくいくようです。私がsendを押すと、sendが送信され、それ以外は何もしません(アプリケーションには戻りません)。私がキャンセルを押すと、それはドラフトとキットを削除しません(または、再びアプリケーションに戻ります)。iOS Appの新しいメッセージの電子メールクライアントに詰まっています

import UIKit 
import MessageUI 

class ContactFormViewController: UITableViewController, MFMailComposeViewControllerDelegate { 

... 

override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { 
    switch indexPath.item{ 
     case 0: 
      followOnEmail() 
     default: 
      break 
    } 
} 

private func mailComposeController(controller: MFMailComposeViewController, didFinishWithResult result: MFMailComposeResult, error: NSError?) { 
    controller.dismiss(animated: true, completion: nil) 
} 

func followOnEmail(){ 
    if !MFMailComposeViewController.canSendMail(){ 
     print("Mail services are not available") 
     return 
    } 

    let composeVC = MFMailComposeViewController() 
    composeVC.mailComposeDelegate = self 

    // Configure the fields of the interface. 
    composeVC.setToRecipients(["[email protected]"]) 
    composeVC.setSubject("") 
    composeVC.setMessageBody("Please enter your message below.", isHTML: false) 

    if MFMailComposeViewController.canSendMail(){ 
     // Present the view controller modally. 
     self.present(composeVC, animated: true, completion: nil) 
    } 
    else{ 
     self.showSendMailErrorAlert() 
    } 
} 

... 

func showSendMailErrorAlert(){ 
    let alertController = UIAlertController(title: "Could Not Send Email", message: "Your device could not send email. Please check e-mail configuration and try again.", preferredStyle: .alert) 
    let defaultAction = UIAlertAction(title: "Close", style: .default, handler: nil) 
    alertController.addAction(defaultAction) 
    present(alertController, animated: true, completion: nil) 
} 

}

答えて

1

スウィフト3は、わずかにAPIを変更しました。

func mailComposeController(_ controller: MFMailComposeViewController, didFinishWith result: MFMailComposeResult, error: Error?) { 
へ 変更

private func mailComposeController(controller: MFMailComposeViewController, didFinishWithResult result: MFMailComposeResult, error: NSError?) { 

関連する問題