키보드가 노출될 때, 그에 맞게 TableView를 위로 스크롤 하는 법

Posted on 2021-11-15 by GKSRUDTN99
Swift&Xcode Swift Chat

키보드가 노출될 때, 그에 맞게 TableView를 위로 스크롤 하는 법


1. 아래 키보드 높이에 맞게 tableView의 ContentOffset을 조절한다.
2. 키보드 높이만큼 contentInset과 IndicatorIneset을 준다.
RxKeyboard.instance.visibleHeight
  .distinctUntilChanged()
  .asDriver(onErrorDriveWith: .empty())
  .drive(onNext: { [weak self] height in
    guard let self = self else { return }
    var keyboardHeight:CGFloat = 0
    if height > 0 {
      keyboardHeight = height - UIApplication.shared.windows.first!.safeAreaInsets.bottom
      self.tableView.setContentOffset(CGPoint(x: self.tableView.bounds.minX, y: self.tableView.bounds.minY + keyboardHeight), animated: false)
    } else {
      keyboardHeight = height
      self.tableView.setContentOffset(CGPoint(x: self.tableView.bounds.minX, y: self.tableView.bounds.minY - self.tableView.contentInset.bottom), animated: false)
    }
    self.tableView.contentInset.bottom = keyboardHeight
    self.tableView.verticalScrollIndicatorInsets.bottom = keyboardHeight
  })
  .disposed(by: disposeBag)