2016-10-03 123 views
1

我使用Xcode 8为iPhone构建应用程序。
我的简单应用程序有一个按钮。当用户点击这个按钮时,messageComposeViewController被调用并且填充电话号码和消息内容。
当我单击发送按钮时,邮件成功通过。

问题是MessageComposeViewController只显示一次。
发送信息后,当我点击按钮调用它时,黑色屏幕显示出来而不是消息编辑器。

我的代码附在下面。
我很感激任何帮助。MessageComposeViewController只显示一次

import UIKit 
import MessageUI 

class ViewController: UIViewController, MFMessageComposeViewControllerDelegate { 

    let msg = MFMessageComposeViewController() 

    @IBOutlet weak var coordinate_label: UILabel! 

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

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


    @IBAction func sendMessage(_ sender: AnyObject) { 

     self.msg.body = "Message Content" 
     self.msg.recipients = ["xxx-xxx-xxxx"] 
     self.msg.messageComposeDelegate = self 

     self.present(msg, animated: false, completion: nil) 
    } 

    func messageComposeViewController(_ controller: MFMessageComposeViewController, didFinishWith result: MessageComposeResult) { 
     switch result.rawValue { 
      case MessageComposeResult.cancelled.rawValue: 
       dismiss(animated: true, completion: nil) 
      case MessageComposeResult.failed.rawValue: 
       dismiss(animated: true, completion: nil) 
      case MessageComposeResult.sent.rawValue: 
       dismiss(animated: true, completion: nil) 
      default: 
       break; 
     } 
    } 
} 
+0

你的任务完成了我的代码,然后批准我的答案。谢谢 –

回答

3

试试这个代码

import Foundation 
import MessageUI 

let textMessageRecipients = ["1-800-867-5309"] // for pre-populating the recipients list (optional, depending on your needs) 

class MessageComposer: NSObject, MFMessageComposeViewControllerDelegate { 

    // A wrapper function to indicate whether or not a text message can be sent from the user's device 
    func canSendText() -> Bool { 
     return MFMessageComposeViewController.canSendText() 
    } 

    // Configures and returns a MFMessageComposeViewController instance 
    func configuredMessageComposeViewController() -> MFMessageComposeViewController { 
     let messageComposeVC = MFMessageComposeViewController() 
     messageComposeVC.messageComposeDelegate = self // Make sure to set this property to self, so that the controller can be dismissed! 
     messageComposeVC.recipients = textMessageRecipients 
     messageComposeVC.body = "Hey friend - Just sending a text message in-app using Swift!" 
     return messageComposeVC 
    } 

    // MFMessageComposeViewControllerDelegate callback - dismisses the view controller when the user is finished with it 
    func messageComposeViewController(controller: MFMessageComposeViewController!, didFinishWithResult result: MessageComposeResult) { 
     controller.dismissViewControllerAnimated(true, completion: nil) 
    } 
} 

注意,最新的语法2017年..

func messageComposeViewController(_ controller: MFMessageComposeViewController, didFinishWith result: MessageComposeResult) { 
    controller.dismiss(animated: true, completion: nil) 
} 

在你的viewController ..

import UIKit 

class ViewController: UIViewController { 
    // Create a MessageComposer 
    let messageComposer = MessageComposer() 

    @IBAction func sendTextMessageButtonTapped(sender: UIButton) { 
     // Make sure the device can send text messages 
     if (messageComposer.canSendText()) { 
      // Obtain a configured MFMessageComposeViewController 
      let messageComposeVC = messageComposer.configuredMessageComposeViewController() 

      // Present the configured MFMessageComposeViewController instance 
      // Note that the dismissal of the VC will be handled by the messageComposer instance, 
      // since it implements the appropriate delegate call-back 
      presentViewController(messageComposeVC, animated: true, completion: nil) 
     } else { 
      // Let the user know if his/her device isn't able to send text messages 
      let errorAlert = UIAlertView(title: "Cannot Send Text Message", message: "Your device is not able to send text messages.", delegate: self, cancelButtonTitle: "OK") 
      errorAlert.show() 
     } 
    } 
} 
+2

嗨Himanshu。谢谢,我刚刚编辑了最新的Swift语法(像平常一样随意放松,编辑等) – Fattie