[트러블 슈팅] MessageKit CollectionView Scroll

징니·2023년 11월 14일

트러블 슈팅

목록 보기
1/3
post-thumbnail

문제 상황

Message Kit을 사용한 화면의 CollectionView Scroll이 위로 올라가는 상황 발생

문제 상황의 코드

private func listenForMessages(id: String, shouldScrollToBottom: Bool) {
    self.processIndicatorView(isHide: false)
    DatabaseManager.shared.getAllMessagesForConversation(with: otherUserUid, completion: { [weak self] result in
        switch result {
        case .success(let messages):
            CommonUtil.print(output:"success in getting messages: \(messages)")
            guard !messages.isEmpty else {
                CommonUtil.print(output:"messages are empty")
                return
            }
            self?.messages = messages
            self?.readMessage()
                
            DispatchQueue.main.asyncAfter(deadline: .now() + 0.5) {
                self?.messagesCollectionView.reloadDataAndKeepOffset()
            }
            self?.processIndicatorView(isHide: true)
        case .failure(let error):
            CommonUtil.print(output:"failed to get messages: \(error)")
            self?.processIndicatorView(isHide: true)
        }
    })
}

원인 추론

  • 메시지를 불러오면서 layout이 재설정되고 문제가 생기는 것 같다.

수정 및 조치

  • 메시지를 불러올 때 layout 문제 해결 -> 해결 못 함 ㅠㅠ
  • 메시지를 불러올 때 scroll을 last item으로 내리는 것으로 변경!!

문제 해결

self?.messagesCollectionView.scrollToLastItem()

profile
iOS 개발자입니다

0개의 댓글