3

在此处输入图像描述

在此方法中,使用 iOS 的 JSQMessage podfile;

collectionView:(JSQMessagesCollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath { .. }

如何将它设置为使用JSQMessagesCollectionViewCellIncomingJSQMessagesCollectionViewCellOutgoing?我发现很难找到其他应用程序如何做到这一点的示例

我的代码;

- (UICollectionViewCell *)collectionView:(JSQMessagesCollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath
{


    JSQMessagesCollectionViewCell *cell = (JSQMessagesCollectionViewCell*)[super collectionView:collectionView cellForItemAtIndexPath:indexPath];



    [cell.textView setDataDetectorTypes:UIDataDetectorTypeNone];
    cell.textView.text = nil;

    VICChatMessage <JSQMessageData> *messageData = (VICChatMessage*)[collectionView.dataSource collectionView:collectionView messageDataForItemAtIndexPath:indexPath];
    cell.textView.attributedText = messageData.attributedText;

    return cell;
}
4

3 回答 3

4

我能够解决这个问题。这与发件人的详细信息有关。

默认情况下,JSQDefaultSender但我的代码只有在它知道发件人的情况下才设置它;所以当发件人未知时,我使用了后备。

这个想法是得到

BOOL isOutgoingMessage = [messageSender isEqualToString:self.sender];

在 podfile 中:JSQMessagesViewController.m

这样它将它们定位在左侧或右侧。

最后,我必须在我的代码中执行此操作,以便获取准备好显示的消息

 if (message.sender.remoteID)
    {
        senderID = @"JSQDefaultSender";
    }
    else
    {
        senderID = @"sender";
    }

这有效并解决了我的问题。

非常感谢大家

于 2015-07-16T11:14:34.933 回答
0

在该messageBubbleImageDataForItemAtIndexPath方法中,您必须将消息的发送者与您的用户进行比较。如果发件人是您的用户,则返回一个outgoingMessagesBubbleImage. 如果没有,请使用incomingMessagesBubbleImage

- (id<JSQMessageBubbleImageDataSource>)collectionView:(JSQMessagesCollectionView *)collectionView messageBubbleImageDataForItemAtIndexPath:(NSIndexPath *)indexPath
{
    JSQMessagesBubbleImageFactory *bubbleFactory = [[JSQMessagesBubbleImageFactory alloc] init];
    Message *message = [your_messages objectAtIndex:indexPath.item];

    if ([message.senderId isEqualToString:self.senderId]) {
        return [bubbleFactory outgoingMessagesBubbleImageWithColor:[UIColor jsq_messageBubbleBlueColor]];
    }

    return [bubbleFactory incomingMessagesBubbleImageWithColor:[UIColor jsq_messageBubbleLightGrayColor]];
}
于 2015-07-15T14:21:27.440 回答
0

对于任何搜索此内容的人,当前的解决方案是覆盖isOutgoingMessage()您的方法JSQMessagesViewController而不是批准的方法。

于 2016-10-05T07:23:20.173 回答