2016-09-21 3 views
0

Ich hoffe, es geht dir gut.MFMailComposeViewController wird nicht geschlossen (iOS10)

Ich bin sehr neu zu Swift. Ich habe eine iOS-Anwendung auf XCode 8.0 mit dem iOS10 SDK erstellt. Ich versuche, einem Benutzer die Möglichkeit zu geben, eine E-Mail an eine vorkonfigurierte E-Mail-Adresse zu senden. Wenn Sie auf die Senden-Schaltfläche tippen, wird der MFMailComposeViewController normal geöffnet und der Benutzer kann über sein hinzugefügtes E-Mail-Konto senden oder abbrechen. Wenn Sie auf Senden klicken, wird die E-Mail normal gesendet. Der MFMailComposeViewController wird jedoch nicht nach dem Senden einer E-Mail oder beim Klicken auf die Schaltfläche Abbrechen geschlossen. Bitte helfen Sie!

Dank

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

Methoden/Funktionen und Variablennamen sollten per Konvention in Camel sein. Verwenden Sie beispielsweise anstelle von 'helpdesk_email_send'' helpdeskEmailSend'. – Adrian

Antwort

1

Ihre vollständigen Code durch diese ersetzen.

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) 
    } 
} 

Einmal versuchen.

+0

Hallo MK, danke für deine Antwort! Ich habe gerade den Code ausprobiert, den Sie gepostet haben, und XCode zeigt eine Fehlermeldung an, dass controller.dismissViewControllerAnimated (true, completion: nil) durch controller.dismiss ersetzt wurde (animated: true, completion: nil). Irgendwelche Vorschläge? –

+0

Ich denke, Sie verwenden Swift> 2.2. Also was ich dachte, ist falsch. Ich habe die Antwort mit einem anderen Ansatz aktualisiert, der mir einmal geholfen hat. Versuch es. –

Verwandte Themen