작성
·
240
0
어느정도 채팅을 치고 키보드를 내렸다 다시 올릴경우
그땐 어떻게 테이블 스크롤이 마지막 채팅을 향하게 하나요??
답변 1
0
keyboardWillShow에서 animation이 끝난 시점에 lastIndexPath로 테이블뷰를 스크롤 해주는 방법이 있을 것 같아요.
animation의 완료와 상관없이 테이블뷰를 스크롤하면, 아직 테이블뷰의 bottom이 저 아래에 있어서 제대로 안되는 것 같네요.
@objc private func keyboardWillShow(noti: Notification) {
let notiInfo = noti.userInfo!
let keyboardFrame = notiInfo[UIResponder.keyboardFrameEndUserInfoKey] as! CGRect
let height = keyboardFrame.size.height - self.view.safeAreaInsets.bottom
let animationDuration = notiInfo[UIResponder.keyboardAnimationDurationUserInfoKey] as! Double
inputTextViewBottomMargin.constant = height
UIView.animate(withDuration: animationDuration) {
self.view.layoutIfNeeded()
} completion: { [unowned self] isCompleted in
if isCompleted {
if !self.chatDatas.isEmpty {
let lastIndexPath = IndexPath.init(row: self.chatDatas.count - 1, section: 0)
self.chatTableView.scrollToRow(at: lastIndexPath, at: .bottom, animated: true)
}
}
}
}