2016-04-05 19 views
1

Sprite Kit oyununa bir e-posta gönder düğmesi eklemeye çalışıyorum. E-posta iletişim kutusunun gösterilmesini sağlayabilirim. Ama iptal edersem, uygulama çökecek veya hiçbir şey yapamayacak. Gönderdiğimde e-posta gönderir, ancak iletişim kutusu kalır. Ateş etmek için mailComposeController işlevini alamıyorum ... lütfen yardım edin!swift - posta görünümü denetleyicisini Sprite Kit'ten kapatılıyor

Kodu:

import Foundation 
import UIKit 
import MessageUI 

class MailViewController: UIViewController, MFMailComposeViewControllerDelegate { 

let systemVersion = UIDevice.currentDevice().systemVersion 
let devicemodel = UIDevice.currentDevice().model 
let appVersion = NSBundle.mainBundle().infoDictionary?["CFBundleShortVersionString"] as! String 
let appBuild = NSBundle.mainBundle().infoDictionary?["CFBundleVersion"] as! String 
let myrootview2 = UIApplication.sharedApplication().keyWindow?.rootViewController 
let mailComposerVC = MFMailComposeViewController() 


override func viewDidLoad() { 
    super.viewDidLoad() 
} 

func sendEmailButtonTapped(sender: AnyObject) { 
    let mailComposeViewController = configuredMailComposeViewController() 
    if MFMailComposeViewController.canSendMail() { 
     self.view.window?.rootViewController = mailComposerVC 
     print("This is the rootview2: \(myrootview2)") 
     myrootview2!.presentViewController(mailComposeViewController, animated: true, completion: nil) 
    } else { 
     self.showSendMailErrorAlert() 
    } 
} 

func configuredMailComposeViewController() -> MFMailComposeViewController { 
    var msgbody: String 

    mailComposerVC.mailComposeDelegate = self 
    msgbody = "\n\nDevice: \(devicemodel)\niOS Version: \(systemVersion)\nApp Version: \(appVersion)\nApp Build Number: \(appBuild)\n" 
    mailComposerVC.setToRecipients(["[email protected]"]) 
    mailComposerVC.setSubject("test subject") 
    mailComposerVC.setMessageBody(msgbody, isHTML: false) 
    //print(mailComposerVC) 
    return mailComposerVC 
} 

func showSendMailErrorAlert() { 
    let sendMailErrorAlert = UIAlertView(title: "Could Not Send Email", message: "Your device could not send e-mail. Please check e-mail configuration and try again.", delegate: self, cancelButtonTitle: "OK") 
    sendMailErrorAlert.show() 
} 





// THIS DOESN'T GET CALLED WHEN SENDING OR CANCELLING EMAIL! 
func mailComposeController(controller: MFMailComposeViewController, didFinishWithResult result: MFMailComposeResult, error: NSError?) { 

    let test1 = result.rawValue 
    print(test1) 
    print(controller) 
    print(self) 
    print(myrootview2) 
} 

cevap

0

@IBAction func sendEmailButtonTapped(sender: AnyObject) { 
    let mailComposeViewController = configuredMailComposeViewController() 

if MFMailComposeViewController.canSendMail() { 

    self.presentViewController(mailComposeViewController, animated: true, completion: nil) 
} else { 
    self.showSendMailErrorAlert() 
} 
} 


 func mailComposeController(controller: MFMailComposeViewController!, didFinishWithResult result: MFMailComposeResult, error: NSError!) { 
     controller.dismissViewControllerAnimated(true, completion: nil) 
} 
aşağıda verilmiştir gibi sorun, kök görünüm olarak mailVC yapıyoruz edilir

, kendi görünümünde sunmak zorunda