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

Ios Swift:第二次打开消息控制器,ios,swift,sms,message,Ios,Swift,Sms,Message,每当用户按下徽标时,计数器将从0计数到3。在这3秒钟之后,我向用户呈现消息控制器: if MFMessageComposeViewController.canSendText() == true { print(self.urgentNumber) let recipients:[String] = ["\(self.urgentNumber as! String)"] self.messageControl

每当用户按下徽标时,计数器将从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

    }
当用户按下cancel或send(取消)或send(发送)消息时,我检测到以下情况:

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实例,而不是重复使用旧的实例。

重置动画做什么?除了删除用户按下3秒时运行的一些动画外,别无他法。另外,隐藏一个覆盖页面20秒的视图,以防止用户与此页面交互。那么,当计时器计数到3秒时,您的
timerDidEnd()
会在哪里调用代码来再次显示
MFMessageComposeViewController
?timerDidEnd()?您是否尝试放置断点?我在TimerDend()之外声明让messageController=MFMessageComposeViewController()。当我在方法中声明它时,它解决了我的问题。