2016-09-21 43 views
0

我希望你很好。MFMailComposeViewController不会关闭(iOS10)

我对Swift很陌生。我使用iOS10 SDK在XCode 8.0上构建了一个iOS应用程序。我试图添加允许用户发送电子邮件到预先配置的电子邮件地址的功能。当点击发送按钮时,MFMailComposeViewController正常打开,用户可以通过其添加的邮件帐户发送或取消。点击发送实际上通常会发送电子邮件,但是MFMailComposeViewController在发送邮件或点击取消按钮后不会关闭。请帮忙!

感谢

import UIKit 
import MessageUI 

class EmailHelpdesk_ViewController: UIViewController, MFMailComposeViewControllerDelegate { 

    override func viewDidLoad() { 
     super.viewDidLoad() 

     // Do any additional setup after loading the view. 
    } 

    override func didReceiveMemoryWarning() { 
     super.didReceiveMemoryWarning() 
     // Dispose of any resources that can be recreated. 
    } 

    //Email Subject and Body text fields. 
    @IBOutlet var helpdesk_email_subject: UITextField! 
    @IBOutlet var helpdesk_email_body: UITextView! 

    //Helpdesk (Submit Button - Config) 
    @IBAction func helpdesk_email_send(_ sender: AnyObject) { 
     let HDsubjectText = helpdesk_email_subject.text 
     let HDbodyText = helpdesk_email_body.text 

     MFMailComposeViewController to be called. 
     let mail_controller_compose = MFMailComposeViewController() 
     mail_controller_compose.mailComposeDelegate = self 

     mail_controller_compose.setToRecipients(["[email protected]"]) 
     mail_controller_compose.setSubject(HDsubjectText!) 
     mail_controller_compose.setMessageBody(HDbodyText!, isHTML: false) 


     self.present(mail_controller_compose, animated: true, completion: nil) 
    } 

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

     } 
    } 
} 
+1

按照惯例,方法/函数和变量名称应该是驼峰式的。例如,不是'helpdesk_email_send',而是使用'helpdeskEmailSend'。 – Adrian

回答

1

本替换你的完整代码。

import UIKit 
import MessageUI 

class EmailHelpdesk_ViewController: UIViewController, MFMailComposeViewControllerDelegate { 

    override func viewDidLoad() { 
     super.viewDidLoad() 

     // Do any additional setup after loading the view. 
    } 

    override func didReceiveMemoryWarning() { 
     super.didReceiveMemoryWarning() 
     // Dispose of any resources that can be recreated. 
    } 

    //Email Subject and Body text fields. 
    @IBOutlet var helpdesk_email_subject: UITextField! 
    @IBOutlet var helpdesk_email_body: UITextView! 

    var mail_controller_compose:MFMailComposeViewController! 

    //Helpdesk (Submit Button - Config) 
    @IBAction func helpdesk_email_send(_ sender: AnyObject) { 
     let HDsubjectText = helpdesk_email_subject.text 
     let HDbodyText = helpdesk_email_body.text 

     //MFMailComposeViewController to be called. 
     mail_controller_compose = MFMailComposeViewController() 
     mail_controller_compose.mailComposeDelegate = self 

     mail_controller_compose.setToRecipients(["[email protected]"]) 
     mail_controller_compose.setSubject(HDsubjectText!) 
     mail_controller_compose.setMessageBody(HDbodyText!, isHTML: false) 


     self.present(mail_controller_compose, animated: true, completion: nil) 
    } 

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

试试一次。

+0

嗨MK,谢谢你的回复!我刚刚尝试了您发布的代码,并且XCode显示错误,告诉我controller.dismissViewControllerAnimated(true,completion:nil)已被controller.dismiss(animated:true,completion:nil)取代。有什么建议么? –

+0

我认为你正在使用swift> 2.2。所以我在想什么是错的。我用另一种帮助过我的方法更新了答案。尝试一下。 –