MessageComposeViewController не вызывает делегата

avatar
rutini
8 апреля 2018 в 01:13
283
1
0

Я безуспешно искал решение своей проблемы...

Приложение, которое я разрабатываю, позволяет пользователю сыграть в небольшую викторину и отправить результат в виде текстового сообщения. Все работает нормально, за исключением случаев, когда предполагается, что MessageComposeViewController отклоняется (при отправке/отмене).

Похоже, что MessageComposeViewController не вызывает делегат, так как я не получаю вывод из функции делегата...

У меня есть отдельный класс SendMessage, который обрабатывает MessageComposeViewController, когда пользователь нажимает кнопку "Отправить" в ViewController, я создаю экземпляр этого класса и представляю его.

Часть моего 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)
    }

}

Класс, обрабатывающий 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)
}

Благодарен за любую помощь!

Источник

Ответы (1)

avatar
Sh_Khan
8 апреля 2018 в 01:18
1

Я думаю, вы должны хранить на него сильную ссылку вместо локальной переменной

let sendResult = SendMessage()

объявить как переменную экземпляра

var sendResult:SendMessage?