안드로이드에서 키보드가 열렸을때와 닫혔을때 다른 컴포넌트를 보여주는 방법 아시는분 있나요?

안녕하세요! 키보드가 올라왔을 때는 KeyboardAvoidingView로 감싸져 있는 A 버튼이 나오고 키보드가 내려가 있을 때는 B 버튼이 나오게 하려고 합니다. manifest는 windowSoftInputMode="adjustResize"로 설정되어있어서 A 버튼도 같이 올라옵니다.

안드로이드는 keyboardWillShow, keyboardWillHide가 없어 keyboardDidShow, keyboardDidHide를 사용해서 키보드 상태를 보고 컴포넌트를 숨기고 보여주는 방식으로 처리했는데 will이 아닌 did로 처리하니 부자연스럽게 작동하네요. input에 onFocus, onBlur를 주는 방법 말고 다른 방법은 없을까요?

안드로이드는 키보드 이벤트에 대한 네이티브 API 지원이 없어 adjustResize시 레이아웃 사이즈 변경 이벤트를 받아 화면 크기와 비교해 열리고 닫히는 것을 체크합니다. 따라서 키보드가 보여지거나 닫히기 전에 이벤트 수신이 불가능한 것이고요. 또 focus가 있다고해서 무조건 키보드가 보여지는 것은 아니기때문에 애니메이션을 통해 전환을 보다 자연스럽게 처리하는 것이 최선일 것 같습니다.

좋아요 2