我正在尝试实现 MessageKit (替换 JSQMessagesViewController)用于聊天功能,在我的 iOS swift 应用程序中。我已经关注了这个raywenderlich tutorial .我使用 Pod 安装并按照本教程一步步进行。我的消息正在显示。根据本教程,为了隐藏用户头像,我将 viewController 设置为 messagesLayoutDelegate
和 messagesDisplayDelegate
的委托(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)
}
}
我在这些函数中设置了断点,但断点从未命中。此外,MessagesDisplayDelegate
的 shouldDisplayHeader
函数也没有被调用
任何帮助将不胜感激
注意:我只在模拟器上测试过。
最佳答案
您的委托(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/