9

यह वह जगह है नमूना कोड खारिज नहीं करता:MFMailComposeViewController

import UIKit 
import MessageUI 

class ViewController: UIViewController, MFMailComposeViewControllerDelegate { 

@IBAction func showEmail(sender : AnyObject) { 
    var emailTitle = "Test Email" 
    var messageBody = "This is a test email body" 
    var toRecipents = ["[email protected]"] 
    var mc: MFMailComposeViewController = MFMailComposeViewController() 
    mc.mailComposeDelegate = self 
    mc.setSubject(emailTitle) 
    mc.setMessageBody(messageBody, isHTML: false) 
    mc.setToRecipients(toRecipents) 

    self.presentViewController(mc, animated: true, completion: nil) 
} 

override func viewDidLoad() { 
    super.viewDidLoad() 
    // Do any additional setup after loading the view, typically from a nib. 
} 

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

func mailComposeController(controller:MFMailComposeViewController, didFinishWithResult result:MFMailComposeResult, error:NSError) { 
    switch result.value { 
    case MFMailComposeResultCancelled.value: 
     NSLog("Mail cancelled") 
    case MFMailComposeResultSaved.value: 
     NSLog("Mail saved") 
    case MFMailComposeResultSent.value: 
     NSLog("Mail sent") 
    case MFMailComposeResultFailed.value: 
     NSLog("Mail sent failure: %@", [error.localizedDescription]) 
    default: 
     break 
    } 
    self.dismissModalViewControllerAnimated(true) 
    // self.dismissViewControllerAnimated(true, completion: nil) 
} 

} 

जब मैं बटन, समारोह showEmail मार डाला और भेजें ईमेल के लिए प्रपत्र प्रकट होता है धक्का। अगर मैं "भेजें" पर क्लिक करता हूं, तो सबकुछ ठीक काम करता है - मेल भेजा जाता है, फिर फ़ंक्शन मेलकंपन नियंत्रक निष्पादित किया जाता है। NSLog लेबल "मेल भेजा गया" प्रदर्शित करता है और प्रारंभिक स्क्रीन फिर से दिखाई देती है।

अगर मैं भेजने मेल के संवाद बॉक्स में हूँ, क्लिक करें "रद्द करें" बटन, फिर बातचीत गायब नहीं होता है, समारोह mailComposeController काम नहीं करता, दो बटन - "भेजें" और "रद्द करें", बनने भूरा रंग और इसलिए यह रहता है।

क्या गलत है?

उत्तर

2

आईओएस में बग होने लगता है 8. उद्देश्य-सी में भी वही समस्या मौजूद है।

+0

डॉन! :-) मैं पहले से ही सैकड़ों अलग-अलग विकल्पों से गुजर चुका हूं! :-) –

+0

क्या यह बग अभी भी जारी है ?, मुझे Xcode6.0.1 – BaSha

+0

में एक ही समस्या का सामना करना पड़ रहा है प्रस्तुतकर्ता व्यू कंट्रोलर प्रस्तुत दृश्य दृश्य नियंत्रक को खारिज करने के लिए जिम्मेदार है, स्वयं – Yariv

3

आप MFMailComposeViewController (जो स्वयं नहीं है) के बजाय self को खारिज करने का प्रयास कर रहे हैं।

बदलें:

self.dismissModalViewControllerAnimated(true) 

साथ:

controller.dismissViewControllerAnimated(true, completion: nil) 
प्रतिनिधि विधि में

+0

बस की कोशिश की: ** controller.dismissViewControllerAnimated (सच है, पूरा होने: शून्य) ** और ** नियंत्रक .dismissModalViewControllerAnimated (true) ** - कोई परिवर्तन नहीं, MFMailCompose को खारिज नहीं किया जाता है :-( –

+4

मेरी समस्या है ** didFinishWithResult ** नहीं निकाल दिया गया। –

2

बग हल हो गया है। सब कुछ आईओएस में अपेक्षा के अनुरूप 8.1+ काम कर रहा है और Xcode 6.1+

निम्नलिखित आग और ठीक काम करता है

extension MainViewController: MFMailComposeViewControllerDelegate { 
    func mailComposeController(controller: MFMailComposeViewController!, didFinishWithResult result: MFMailComposeResult, error: NSError!) { 
     switch result.value { 
     case MFMailComposeResultCancelled.value: 
      NSLog("Mail cancelled") 
     case MFMailComposeResultSaved.value: 
      NSLog("Mail saved") 
     case MFMailComposeResultSent.value: 
      NSLog("Mail sent") 
     case MFMailComposeResultFailed.value: 
      NSLog("Mail sent failure: %@", [error.localizedDescription]) 
     default: 
      break 
     } 
     self.dismissViewControllerAnimated(true, completion: nil) 
    } 
} 
+1

नहीं, यह अब ios9.2 में काम नहीं कर रहा है –

संबंधित मुद्दे