问题

在iOS 10.2上

仅在第一次选择一条消息时才调用didSelect(),而第二次选择同一条消息时(第一次选择发生后立即),则不会调用didSelect()。例如:

  • 在我的消息应用程序处于 Activity 状态,正确调用didSelect()方法并将应用程序转换为扩展视图时,单击收到的MSMessage Message_A。
  • 单击向下箭头以使应用回到压缩视图。
  • 单击同一消息-再次单击Message_A,这一次没有触发didSelect()。

  • 来自苹果的词

    func didSelect(MSMessage,对话:MSConversation)

    在系统更新对话的selectedMessage属性后调用,以响应用户在脚本中选择消息对象。

    我的想法

    当我们第二次单击该消息时,似乎selectedMessage没有更新(因为它已经在第一次单击中设置了),因此没有调用didSelect()。

    问题
  • 我做错了吗?
  • 是否有解决方法,只要发生选择,就调用didSelect()? selectedMessage是只读的...
  • 还是有一种方法可以使消息在用户打开(单击)消息后立即从对话过期(消失)(即消失)
  • 最佳答案

    恐怕这是一个错误,有一个open radar for that(或者考虑到自问题提交以来经过了多长时间,它是“通过设计”完成的)。

    但是,当选择了message时,iMessage的扩展程序试图移至扩展模式并调用willTransition(to presentationStyle:)委托方法(该方法似乎是another bug或设计很酷的东西)。通过检查扩展控制器是否已经显示并调整自定义标志,您可以做到这一点,尽管在某些情况下它并不可靠。

    10-06 00:05