首页 > 解决方案 > 在swift 4中通过短信推荐朋友

问题描述

嗨想通过短信推荐朋友我写了以下代码。如果用户选择打开带有文本的 SMS 但它没有再次取消用户将无法返回应用程序。

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

标签: iosswiftsmsrefer

解决方案


您没有MFMessageComposeViewControllerDelegate在代码中正确实现。

首先您需要MFMessageComposeViewControllerDelegate与您的确认UIViewController如下:

class ViewController: UIViewController, MFMessageComposeViewControllerDelegate {

接下来是您需要添加它的委托方法,如下所示:

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

然后你需要更换

controller1.messageComposeDelegate = self as? MFMessageComposeViewControllerDelegate

controller1.messageComposeDelegate = self

演示代码将是:

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

推荐阅读