问题
在iOS 10.2上
didSelect()仅在第一次选择消息时被调用,但不是第二次选择相同的消息时(在第一次选择发生后)。例如:
来自Apple的话
func didSelect(MSMessage,conversation:MSConversation)
在系统更新对话的selectedMessage属性以响应用户在记录中选择消息对象后调用。
我的想法
当我们第二次点击该消息时(因为它已经在第一次点击中设置),似乎selectedMessage没有更新,因此没有调用didSelect()。
问题
答案 0 :(得分:1)
我担心这是一个错误,有一个open radar for that(或者它已经完成了设计',考虑到问题已经过了多长时间已提交)。
尽管如此,当选择消息时,iMessage的扩展程序正在尝试转移到扩展模式并调用willTransition(to presentationStyle:)
委托方法(看似another bug或冷却 - 设计) )。通过检查扩展控制器是否已经显示并调整自定义标志,您可以做到这一点,尽管在某些情况下它不可靠。
答案 1 :(得分:0)
@degapps,
以下是一种解决方法:首次点击消息后,didSelect()将带您进入展开式视图。现在,如果发生向紧凑视图的转换,我们将关闭此应用程序。它不是一个好的解决方案,不太可能适用于大多数应用程序。
override func willTransition(to presentationStyle: MSMessagesAppPresentationStyle) {
if (presentationStyle == .compact) {
if let _ = self.activeConversation?.selectedMessage {
self.dismiss()
}
}
}