2016-09-26 8 views
1

Ich habe eine einfache iOS10-Anwendung, die ich erstelle. Ich habe eine Seite erstellt, auf der ein Benutzer eine Betreffzeile und den Text der E-Mail hinzufügen kann. Wenn Sie auf die Schaltfläche E-Mail senden klicken, wird MFMailViewCompose normal gestartet und wenn ich auf "Senden" klicke, wird die E-Mail gesendet. Das MFMailViewCompose wird jedoch nicht geschlossen, wenn Sie auf Senden oder Abbrechen klicken.MFMailViewCompose wird nicht geschlossen

Hier ist der Code

import UIKit 
import MessageUI 

class EnglishEmailHelpdeskVC: 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. 
} 

//Helpdesk Email Subject Line and Body. 
@IBOutlet var EmailHelpdeskSubjectLine: UITextField! 
@IBOutlet var EmailHelpdeskBody: UITextView! 

var MailControllerCompose:MFMailComposeViewController! 

//Helpdesk Send Email Button. 
@IBAction func EmailHelpdeskSendButton(_ sender: AnyObject) { 
let HDSubjectLine = EmailHelpdeskSubjectLine.text 
let HDBody = EmailHelpdeskBody.text 

MailControllerCompose = MFMailComposeViewController() 
MailControllerCompose.mailComposeDelegate = self 
MailControllerCompose.setToRecipients(["[email protected]"]) 
MailControllerCompose.setSubject(HDSubjectLine!) 
MailControllerCompose.setMessageBody(HDBody!, isHTML: false) 

self.present(MailControllerCompose, animated: true, completion: nil) 

} 

@nonobjc func MFMailComposeViewContoller(controller: MFMailComposeViewController,didFinishWithResult result:MFMailComposeResult, error: NSError?){ 
MailControllerCompose.dismiss(animated: true, completion: nil) 
} 
} 

Bitte um Hilfe!

Antwort

0

Nach ziemlich viel mit diesem Problem zu kämpfen, hier ist was für mich endlich geklappt:

public func mailComposeController(_ controller: MFMailComposeViewController, didFinishWith result: MFMailComposeResult, error: Swift.Error?) { 
    controller.dismiss(animated: true, completion: nil) 
} 

Das Kernstück ist Swift.Error im letzten Parameter. Ohne das Qualifikationsmerkmal Swift wird Error in UIViewController.Error aufgelöst, was nicht mit der Methode übereinstimmt, die wir zu überschreiben versuchen. Ich vermute, dass Ihre Wahl von NSError aus dem gleichen Grund fehlschlägt.

(. Bemerkenswert ist, mein falscher Error Typ anscheinend kommt von PromiseKit, nicht von UIKit als ich ursprünglich gedacht)

+0

Sehen aus wie jemand anderes zu dem gleichen Schluss gekommen: http://stackoverflow.com/a/ 39623586/58603 –

Verwandte Themen