Swift: 第二次打开消息控制器

Swift: Open message controller for second time

每当用户按下徽标时,计数器就会从 0 计数到 3。这 3 秒后,我将向用户显示消息控制器:

        if MFMessageComposeViewController.canSendText() == true {
            print(self.urgentNumber)
            let recipients:[String] = ["\(self.urgentNumber as! String)"]
            self.messageController.messageComposeDelegate  = self as? 
            MFMessageComposeViewControllerDelegate
            self.messageController.recipients = recipients
            self.messageController.body = "Hey,\nmy longitude: \
            (self.userLocation.coordinate.longitude) \nmy latitude: \
            (self.userLocation.coordinate.latitude)"

            self.present(self.messageController, animated: true, 
                completion: nil)


    } else {
        //handle text messaging not available

    }

当用户按下取消或发送消息时,我在 :

中检测到了这一点
func messageComposeViewController(_ controller: MFMessageComposeViewController, didFinishWith result: MessageComposeResult) {
    messageController.dismiss(animated: true, completion: nil)
}

此处用户应等待 20 秒以发送另一条消息:

DispatchQueue.main.asyncAfter(deadline: .now() + 20, execute: {
        self.reSetAnimations()
    })

问题是,当用户第二次按下徽标时(等待 20 秒让他能够再次按下),消息控制器不会再次打开!

知道为什么吗?

尝试创建 MFMessageComposeViewController 的新实例,而不是重复使用旧实例。