简体   繁体   English

MessageComposeViewController不调用委托

[英]MessageComposeViewController not calling delegate

I've been searching for solutions to my problem without any success... 我一直在寻找解决问题的方法,但没有成功...

The app I'm developing lets the user play a small quiz game and send the result as a text message. 我正在开发的应用程序使用户可以玩小型问答游戏并将结果作为文本消息发送。 Everything works fine except when the MessageComposeViewController is suppose to dismiss (on send/cancel). 一切正常,除非要关闭MessageComposeViewController(在发送/取消时)。

It seems like the MessageComposeViewController doesn't call the delegate since I don't get the print from the delegate function... 似乎MessageComposeViewController没有调用委托,因为我没有从委托函数中获取打印内容...

I have a separate class called SendMessage which handles the MessageComposeViewController, when the user click a button "Send" in a ViewController I create an instance of this class and present it. 我有一个名为SendMessage的单独的类,该类处理MessageComposeViewController,当用户在ViewController中单击“发送”按钮时,我将创建该类的一个实例并将其呈现。

Part of my ViewController with the send button: 使用发送按钮的ViewController的一部分:

    @IBAction func Send(_ sender: Any) {

    let sendResult = SendMessage()

    if sendResult.canSend() {
        let meddelande = sendResult.createMessage(result: 8, name: "Steve Jobs")
        present(meddelande, animated: true, completion: nil)
    } else {
        alert.addAction(alertButton)
        self.present(alert, animated: true, completion: nil)
    }

}

The class which handles the MessageComposeViewController called SendMessage (I left some irrelevant code out) 处理MessageComposeViewController的类称为SendMessage(我省略了一些无关的代码)

    func createMessage(result: Int, name: String) -> MFMessageComposeViewController {

    let meddelande = MFMessageComposeViewController()
    meddelande.messageComposeDelegate = self
    meddelande.recipients = ["PhoneNumber"]        
    meddelande.body = name + ": " + String(result)
    return meddelande

}


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

Grateful for any help! 感谢您的帮助!

I think you should hold a strong reference to it instead of a local variable 我认为您应该强烈引用它而不是局部变量

let sendResult = SendMessage()

declare it as instance variable 声明为实例变量

var sendResult:SendMessage?

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM