我尝试了这些代表,但它没有正常工作
override func didSelect(_ message: MSMessage, conversation: MSConversation) {
print("DID SELCT")
}
override func willSelect(_ message: MSMessage, conversation: MSConversation) {
print("WILL SELCT")
}
答案 0 :(得分:2)
Q1。我如何在对话中的消息上检测到用户点击?
A1。在iOS 11及更高版本中,您可以为消息使用实时布局(请参阅类MSMessageLiveLayout
(@available(iOS 11.0, *)
)。这样做时,可以向显示的视图添加UITapGestureRecognizer
实例MSMessagesAppViewController
实例的presentationStyle
为.transcript
(@available(iOS 11.0, *)
)时,在对话记录中显示。
观看来自What's New in iMessage Apps
(https://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
}
}