키보드 이벤트 리스너
- 확인을 누르면 저장이 되어야 하는 기능을 구현해야 했다.
- keyEvent를 받아야겠다고 생각
- 찾아본 결과 Activity에서만 onKeyDown() 을 사용할 수 있다는 것을 찾음
- requireActivity(). onKeyDown()이런 식으로 사용할까 고민하다가 setOnKeyListener 를 찾음
- setOnKeyListener 란
- 키이벤트를 받아서 처리할 수 있게 도와주는 리스너
- 아래와 같은 식으로 사용
binding.textField.editText.setOnKeyListener{v, keyCode, event->
Timber.tag("AppTest").w("$keyCode")
when(keyCode) {
KeyEvent.KEYCODE_ENTER-> {
requestAction(EditDefaultAddressViewModel.UiAction.OnClickSave)
true
}
else -> false
}
}
- 문제 발생
- 백스페이스가 안 먹는 문제가 발생함
- true를 리턴해야 하는 줄 알고 구현했는데 keyEvent를 소비했을 때만 true여야 한다는 것을 알게 됨
- 엔터가 아닐 때는 false를 리턴하도록 수정해서 문제 해결
- 도움받은 글