1

Hi want want to make a refer a friend through SMS I write the following code. If user is pick on that open the SMS with text but it don't cancel again user will unable go back to app.

if indexPath.item == 1
        {
            //SMS
            if MFMessageComposeViewController.canSendText() {

                let urlToShare = self.referalmodeldata[0].referralCodeOnly

                controller1.body = "Hey I just gave an Awesome Assessment on App you can also try it. I scored , Try to beat my score \(String(describing: urlToShare))"

                controller1.messageComposeDelegate = self as? MFMessageComposeViewControllerDelegate
                self.present(controller1, animated: true, completion: nil)
            }
        }

1 Answers1

3

You haven't implemented MFMessageComposeViewControllerDelegate correctly in your code.

First of all you need to confirm MFMessageComposeViewControllerDelegate with your UIViewController as shown below:

class ViewController: UIViewController, MFMessageComposeViewControllerDelegate {

Next thing is you need add it's delegate method as shown below:

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

Then you need to replace

controller1.messageComposeDelegate = self as? MFMessageComposeViewControllerDelegate

with

controller1.messageComposeDelegate = self

Demo code will be:

import UIKit
import MessageUI

class ViewController: UIViewController, MFMessageComposeViewControllerDelegate {

    @IBAction func sendText(_ sender: Any) {
        if (MFMessageComposeViewController.canSendText()) {
            let controller = MFMessageComposeViewController()
            controller.body = "Message Body"
            controller.messageComposeDelegate = self
            self.present(controller, animated: true, completion: nil)
        }
    }

    func messageComposeViewController(_ controller: MFMessageComposeViewController, didFinishWith result: MessageComposeResult) {
        self.dismiss(animated: true, completion: nil)
    }
}
Dharmesh Kheni
  • 71,228
  • 33
  • 160
  • 165