2017-10-12 266 views
0

打開消息控制器每當在一個標誌用戶按下,計數器從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'? –

回答

1

嘗試創建MFMessageComposeViewController的新實例,而不是重新使用舊實例。

+0

我聲明 讓messageController = MFMessageComposeViewController() 的timerDidEnd外()。當我在方法中聲明它時,它解決了我的問題。 – mahdi