夫特:用于第二时间
问题描述:
打开消息控制器每当在一个标志用户按下,计数器从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
的新实例,而不是重新使用旧实例。
+0
我声明 让messageController = MFMessageComposeViewController() 的timerDidEnd外()。当我在方法中声明它时,它解决了我的问题。 – mahdi
'reSetAnimations'做什么? –
除了删除用户按下3秒后运行的某些动画之外,没有别的。另外还隐藏了覆盖页面20秒的视图,以防止用户与此页面进行交互。 – mahdi
那么你在哪里调用你的代码来再次呈现'MFMessageComposeViewController'? –