Ios JSQMessagesController文本视图卡住

Ios JSQMessagesController文本视图卡住,ios,objective-c,uitextview,jsqmessagesviewcontroller,Ios,Objective C,Uitextview,Jsqmessagesviewcontroller,发送2-3条消息后,我的文本视图冻结。我的iOS版本是10.2.1,测试设备是iPhone 6Plus,JSQMessagesViewController版本是7.3.4,代码是Obj-C。我实现了以下方法: -(void)didPressSendButton:(UIButton *)button withMessageText:(NSString *)text senderId:(NSString *)senderId senderDisplayName:(NSString *)senderD

发送2-3条消息后,我的文本视图冻结。我的iOS版本是10.2.1,测试设备是iPhone 6Plus,JSQMessagesViewController版本是7.3.4,代码是Obj-C。我实现了以下方法:

-(void)didPressSendButton:(UIButton *)button withMessageText:(NSString *)text senderId:(NSString *)senderId senderDisplayName:(NSString *)senderDisplayName date:(NSDate *)date
{
    [self addMessagewithId:senderId name:senderDisplayName date:date andText:text inArray:_messages inGroup:nil];

    NSDateFormatter *dateF = [[NSDateFormatter alloc] init];
    dateF.dateFormat= @"yyyy-MM-dd hh:mm:ss zzzz";
    NSString *dateStr = [dateF stringFromDate:date];

    NSDictionary *mdata = @{@"text": text, @"senderId":senderId, @"displayName": senderDisplayName, @"date":dateStr};

    // Push data to Firebase Database
    [[[_rootRef child:@"messages"] childByAutoId] setValue:mdata];

    [self finishSendingMessageAnimated:NO];

    _isTyping =false;
    [self sendIsTyping];    
}

-(void)addMessagewithId:(NSString*) senderId name:(NSString*) name date:(NSDate*)date andText:(NSString*) text inArray:(NSMutableArray*)array inGroup:(dispatch_group_t)group1
{

    JSQMessage* message = [[JSQMessage alloc] initWithSenderId:senderId senderDisplayName:name date:date text:text];

    [array addObject:message];

    if (group1) {
        dispatch_group_leave(group1);
    }

}
但是打电话之后

[自动完成发送消息动画:否]


文本视图开始冻结,光标停留在文本结束的位置。此冻结时间随着用户发送更多消息而增加。请帮助。

我代码中的问题是调用该方法后

[[[_rootRef child:@"messages"] childByAutoId] setValue:mdata];

it was again reloading all the collectionview as expected from FIRDataEventTypeValue . So I put an array like this :

 [[[_rootRef child:@"messages"] queryOrderedByKey] observeEventType:FIRDataEventTypeValue withBlock:^(FIRDataSnapshot * _Nonnull snapshot) {
for (FIRDataSnapshot *child in snapshot.children) {

                    if ([_arrSnap containsObject:child.key]) {
                        return;
                    }
                    else
                    {
                        [_arrSnap addObject:child.key];

                        //do rest of your coding here
                    }
}
}
因此,我的collectionview的重新加载停止了,所有额外的代码执行也停止了


也感谢@Daniellonard的回复。这让我找到了这个解决方案。

我们无法利用您提供的信息。你能给我们一个更大的代码样本吗。听起来您可能在每次发送消息时都会遇到发送大量数据的问题,但这是基于您提供的代码的猜测。“如果你能给我们更多帮助的话。”丹尼尔·诺纳德:我已经编辑了这个问题。请检查。所以我会先检查一下,看看是不是firebase让你慢下来了。只需注释掉
[[[u rootRef child:@“messages”]childByAutoId]setValue:mdata]
并发送几条消息。如果悬挂速度没有减慢,那么您的问题是firebase而不是库。如果这不能消除延迟,请告诉我。@Daniellonard您的解决方案帮助了我。对于有相同问题的人,请通过以下链接: