夫特:用于第二时间

夫特:用于第二时间

问题描述:

打开消息控制器每当在一个标志用户按下,计数器从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秒后再给他按下的能力)时,消息控制器不会再次打开!

有什么想法为什么?

+0

'reSetAnimations'做什么? –

+0

除了删除用户按下3秒后运行的某些动画之外,没有别的。另外还隐藏了覆盖页面20秒的视图,以防止用户与此页面进行交互。 – mahdi

+0

那么你在哪里调用你的代码来再次呈现'MFMessageComposeViewController'? –

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

+0

我声明 让messageController = MFMessageComposeViewController() 的timerDidEnd外()。当我在方法中声明它时,它解决了我的问题。 – mahdi