ios - 如何在 swift 4 中正确实现 MessageKit? |未调用委托(delegate)函数

标签 ios swift messagekit

我正在尝试实现 MessageKit (替换 JSQMessagesViewController)用于聊天功能,在我的 iOS swift 应用程序中。我已经关注了这个raywenderlich tutorial .我使用 Pod 安装并按照本教程一步步进行。我的消息正在显示。根据本教程,为了隐藏用户头像,我将 viewController 设置为 messagesLayoutDelegatemessagesDisplayDelegate 的委托(delegate)。

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

但是,MessagesLayoutDelegate 的委托(delegate)函数没有被调用。

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

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)
 }

}

我在这些函数中设置了断点,但断点从未命中。此外,MessagesDisplayDelegateshouldDisplayHeader 函数也没有被调用

任何帮助将不胜感激

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

最佳答案

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

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

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

pod 'MessageKit', '1.0.0'

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

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)中设置的。

关于ios - 如何在 swift 4 中正确实现 MessageKit? |未调用委托(delegate)函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51857751/

相关文章:

ios - 识别同一位置的所有节点

ios - 在 InputBarAccessoryView TextField 中处理(或禁用)Memoji

IOS 内存管理 - 将视频写入临时文件

ios - unicode 到字符串的快速转换

ios - 如何快速解析 Json 文件以获取 2 个 Collection View ?

Swift MessageKit 问题

iphone - 从 UITableView 中删除部分

iphone - 如何确定当前位置是否在 KML 定义的区域内?

ios - XC测试 : Can expectationForPredicate fulfill on async variable change?