Swift 3:iMessage Extension检测用户点击消息和检测手动幻灯片

时间:2017-12-30 07:45:43

标签: ios swift imessage-extension

  1. 如何在对话中检测用户点击消息?
  2. 如果MessageViewController控制器是紧凑的,用户可以向上滑动我如何检测到它?
  3. 我尝试了这些代表,但它没有正常工作

    override func didSelect(_ message: MSMessage, conversation: MSConversation) {
       print("DID SELCT")
    }
    override func willSelect(_ message: MSMessage, conversation: MSConversation) {
        print("WILL SELCT")
    }
    

1 个答案:

答案 0 :(得分:2)

Q1。我如何在对话中的消息上检测到用户点击?

A1。在iOS 11及更高版本中,您可以为消息使用实时布局(请参阅类MSMessageLiveLayout@available(iOS 11.0, *))。这样做时,可以向显示的视图添加UITapGestureRecognizer实例MSMessagesAppViewController实例的presentationStyle.transcript@available(iOS 11.0, *))时,在对话记录中显示。

观看来自What's New in iMessage Appshttps://developer.apple.com/videos/play/wwdc2017/234/?time=1726)的视频WWDC 2017 - Session 234 - iOS。在演示文稿开始约29分钟后,您将找到点击手势识别器的讨论。视频中的前面部分介绍了如何在.transcript子类的willBecomeActive(with:)方法中检测MSMessagesAppViewController表示样式,以及如何显示适当的子视图控制器。

Q2。如果MessageViewController控制器很紧凑,并且用户向上滑动,我该如何检测到它?

A2。像这样在您的willTransition(to:)子类中覆盖MSMessagesAppViewController

override func willTransition(to newPresentationStyle: MSMessagesAppPresentationStyle) {
    super.willTransition(to: newPresentationStyle)  // don't forget to call super

    // note that MSMessagesAppViewController's `presentationStyle` property holds the presentation style BEFORE the transition
    print("will transition() from \(presentationStyle.rawValue) to \(newPresentationStyle.rawValue) [0 = .compact, 1 = .expanded, 2 = .transcript]")

    if (presentationStyle == .compact && newPresentationStyle == .expanded) {
        // handle transition from .compact to .expanded here

    }
}