티스토리 뷰

이슈 내용

사용자가 본인인증 화면으로 넘어 갔을 때,

이름, 주번, 핸드폰 등 입력 중 Keyborad 움직임이 있을 때..

갑자기 하단에 “완료” 버튼이 위로 솟구치는 현상으로

이후 본인인증이 되지 않음.

사용자의 핸드폰에서는 이슈가 발생하지만(주로 14프로 기기에서 발생)

회사의 여러 테스트 폰에서는 발생하지 않음.

먼저 코드를 분석 함.

private func installRxKeyboard() {
  self.keyboardDispose = RxKeyboard.instance.visibleHeight
    .drive(onNext: { [weak self] keyboardVisibleHeight in
      guard let self = self else { return }
			
			// 키보드의 움직임을 감자.
      self.submitButton.snp.updateConstraints { make in
				// 키보드가 올라왔을 때
        if keyboardVisibleHeight > 0 {
          make.bottom
            .equalTo(self.view.safeAreaLayoutGuide.snp.bottom)
            .offset(self.view.safeAreaInsets.bottom-keyboardVisibleHeight-12)
        } 
				// 키보드가 내려갔을 때
				else {
          make.bottom.equalTo(self.view.safeAreaLayoutGuide.snp.bottom).offset(-12)
        }
      }
      self.view.setNeedsLayout()
      UIView.animate(withDuration: 0) {
        self.view.layoutIfNeeded()
      }
    })
}

14프로와 14프로 맥스가 다이나믹 아일랜드로 인해서 safeAreaLayoutGuide이 변경됨.

상단의 크기는 조금 변경 되었지만 하단의 크기는 변경 되지 않음..

그 다음으로 RxKeyboard 라이브러리를 살펴봄.

아이폰 14프로 출시 이후 업데이트가 되었는지 확인해봄.

https://github.com/RxSwiftCommunity/RxKeyboard

최근 4월에 출시 된 버전이 있음.

최신 버전인 2.0.1 출시 노트를 보니

The visibleHeight's output is wrong when 'Reduce Motion' and 'Prefer Cross-Fade Transitions' are on fixed;
Restricted number of touches to 1 that prevents keyboard unexpected behavior when user scrolls by multiple fingers simultaneously

Reduce Motion(동작줄이기)

Prefer Cross-Fade Transitions(크로스페이드 전환 선호)

옵션이 활성화 되어 있는 경우 → 키보드를 높이를 잘못 가져올 수 있음.

확인 해본 결과 Rxkeyboard 를 2.0.0 사용 중이었음.

최신 버전 2.0.1로 업데이트 해야 함.

github에는 2.0.1 버전이 존재 하나 cocoapods으로는 최신 버전이 가져와 지지 않음.

https://eunjin3786.tistory.com/107

위 블로그를 참조해서 Rxkeyboard 레포를 fork 뜨고

SPM으로 최신 버전의 코드를 프로젝트에 반영함.

pod은 삭제

기술 지원들으로 들어 온 문의에서

사용자에게 해당되는 옵셥들을 다시 비활성화 후 앱 사용을 요청.

이후 핫픽스로 최신 Rxkeyboard 가 반영된 버전 배포.


Uploaded by N2T

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크