2017-01-14 17 views
1

問題MSMessagesAppViewController沒有正確調用didSelect()?

在iOS 10.2

didSelect()才調用時選擇所述第一時間的消息,但不爲所述第二時間選擇相同的消息(第一選擇發生後右) 。例如:

  1. 單擊接收到的MSMessage Message_A,同時我的消息應用程序處於活動狀態,正確調用didSelect()方法並且應用程序轉移到擴展視圖。
  2. 單擊向下箭頭可將應用程序恢復爲壓縮視圖。
  3. 再次點擊相同的消息 - Message_A,這次didSelect()沒有被觸發。

詞從蘋果

FUNC didSelect(MSMessage,談話:MSConversation)

系統後調用更新對話的selectedMessage屬性響應用戶選擇的消息對象成績單。

我認爲

看來,當我們點擊郵件中的第二次selectedMessage不更新(因爲它是在第一次點擊已經設置),從而didSelect()沒有被調用。

問題

  • 上午我做錯了?
  • 只要選擇發生,是否有辦法解決並調用didSelect()? selectedMessage是隻讀的...
  • 或者是否有一種方法可以讓用戶在打開(點擊)郵件後立即從對話中消失(消失)

回答

0

恐怕是一個錯誤,有一個open radar for that(或者是「被設計」完成的,考慮到了多少時間,因爲這個問題通過了提交)。儘管如此,當選擇消息時,iMessage的擴展正嘗試移動到擴展模式,並調用willTransition(to presentationStyle:)委託方法(這看起來是another bug或者是每個設計很酷的東西)。通過檢查展開後的控制器是否已經顯示並調整自定義標誌,您可能會訣竅,儘管在某些情況下它不可靠。

+0

「被選中的消息時,iMessage的分機正試圖轉移到擴展模式」: 我用的方法實現我的邏輯規避了這個問題:這不會發生在這裏。 – shallowThought

+0

感謝您的幫助@degapps。 我認爲使用'willTransition()',但它很難確定是否行動來自: 1)點擊該消息或2)點擊展開按鈕 – Jess

+0

嗨@shallowThought,感謝您的意見,擴展發生在我點擊消息。 – Jess

0

@degapps,

這裏是一個解決辦法:在消息第一次點擊後,didSelect()將帶您到擴展視圖。現在,如果轉換到精簡視圖發生,我們解僱這個應用程序。這不是一個好的解決方案,並且不可能適用於大多數應用程序。

override func willTransition(to presentationStyle: MSMessagesAppPresentationStyle) { 
    if (presentationStyle == .compact) { 
     if let _ = self.activeConversation?.selectedMessage { 
      self.dismiss() 
     } 
    } 
} 
0

我有同樣的問題,didSelect()和willSelect()方法被調用一次。

目標C

-(void)didBecomeActiveWithConversation:(MSConversation *)conversation 

斯威夫特

func didBecomeActive(with conversation: MSConversation) 
+0

但它沒有任何意義,因爲即使未點擊消息,也會調用此函數。 – GGirotto