2016-10-03 7 views
1

Ich verwende Xcode 8, um eine Anwendung für das iPhone zu erstellen.
Meine einfache App hat eine Schaltfläche. Wenn Benutzer auf diese Schaltfläche tippen, wird messageComposeViewController aufgerufen und mit Telefonnummer und Nachrichteninhalt gefüllt.
Die Nachricht wurde erfolgreich ausgeführt, als ich auf "Senden" geklickt habe.

Das Problem ist MessageComposeViewController wird nur einmal angezeigt.
Nachdem die Nachricht gesendet wurde, als ich auf die Schaltfläche geklickt habe, um sie anzurufen, erschien ein schwarzer Bildschirm anstelle des Nachrichten-Composers.

Mein Code ist unten angehängt.
Ich schätze jede Hilfe.MessageComposeViewController wird nur einmal angezeigt

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

Ihre Aufgabe ist mit dem Minencode erledigt und genehmigt meine Antwort. danke –

Antwort

3

diesen Code Versuchen

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

Hinweis, neueste Syntax 2017 ..

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

in Ihrem 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

Hallo Himanshu. Danke, ich habe gerade die neueste Swift-Syntax bearbeitet (fühle mich frei, wie üblich zu entspannen, zu bearbeiten) – Fattie

Verwandte Themen