11

我试图在我的 iOS swift 应用程序中为聊天功能实现MessageKit(替换 JSQMessagesViewController)。我遵循了这个raywenderlich 教程。我使用 Pods 安装并逐步遵循本教程。我的消息正在显示。根据本教程,为了隐藏用户头像,我将我的 viewController 设置为messagesLayoutDelegateand的委托messagesDisplayDelegate

//Inside view did load, i set the delegates, along with data source
messagesCollectionView.messagesDataSource = self
messagesCollectionView.messagesLayoutDelegate = self
messagesCollectionView.messagesDisplayDelegate = self

MessagesLayoutDelegate但是,没有调用的委托函数。

我想隐藏用户头像,所以我在我的 viewController 中采用了协议

extension ChatLogVC_MessageKit: MessagesLayoutDelegate {

 func avatarSize(for message: MessageType, at indexPath: IndexPath,
              in messagesCollectionView: MessagesCollectionView) -> CGSize {

    //return zero size for hiding avatar, but this function is not being called. 

  return .zero
 }

 func footerViewSize(for message: MessageType, at indexPath: IndexPath,
                      in messagesCollectionView: MessagesCollectionView) -> CGSize {

    //also not being called

    return CGSize(width: 0, height: 8)
 }

}

我在这些函数中设置了断点,但断点从未命中。而且,shouldDisplayHeader函数MessagesDisplayDelegate也没有被调用

任何帮助将非常感激

注意:我只在模拟器上测试过。

4

2 回答 2

4

您的委托方法看起来已经过时了。如果您使用的是 Cocoa pod,至少使用 1.0.0 beta 1 版本:

pod 'MessageKit', '1.0.0-beta.1'

或者,更好的是,使用 1.0.0 版本:

pod 'MessageKit', '1.0.0'

在您的viewDidLoad()方法中设置委托:

messagesCollectionView.messagesDataSource = self
messagesCollectionView.messagesLayoutDelegate = self
messagesCollectionView.messagesDisplayDelegate = self
messagesCollectionView.messageCellDelegate = self

顺便说一句,头像大小是在 MessagesDisplayDelegate 方法中设置的func configureAvatarView(_ avatarView: AvatarView, for message: MessageType, at indexPath: IndexPath, in messagesCollectionView: MessagesCollectionView)

于 2018-08-31T05:52:26.500 回答
1

签出库中的示例

https://github.com/MessageKit/MessageKit/tree/master/Example

于 2018-10-12T17:16:50.093 回答