У меня есть EditText, где я реализую Слушатель, чтобы знать, когда backspace вниз / вверх
Но у слушателя странное поведение.
Когда я нажимаю и удерживаю любую клавишу на программной клавиатуре, клавиши «Вниз» и «Вверх» вызываются последовательно, но только когда я отпускаю клавишу.
Когда я нажимаю и удерживаю клавишу Backspace, вверх / вверхdown вызываются несколько раз, даже если я все еще нажимаю клавишу.
Я использую журналы, чтобы проверить поведение.См. Код ниже:
myEditText.setOnKeyListener { v, keyCode, event ->
if (event.getKeyCode() == KeyEvent.KEYCODE_DEL) {
if (event.action == KeyEvent.ACTION_UP) {
Log.wtf("delete", "up")
}
if (event.action == KeyEvent.ACTION_DOWN) {
Log.wtf("delete", "down")
}
} else {
if (event.action == KeyEvent.ACTION_UP) {
Log.wtf("another ", "up")
}
if (event.action == KeyEvent.ACTION_DOWN) {
Log.wtf("another", "down")
}
}
true
}
}
Журнал, когда я нажимаю и удерживаю клавишу Backspace:
E/delete: down
E/delete: up
E/delete: down
E/delete: up
E/delete: down
E/delete: up
E/delete: down
E/delete: up
Журнал, когда я нажимаю другую клавишу и отпускаю
E/another: down
E/another: up
я получаю ту же ошибку, когда переопределяю dispatchKeyEvent () из действия.
override fun dispatchKeyEvent(event: KeyEvent): Boolean {
if (event.getKeyCode() == KeyEvent.KEYCODE_DEL) {
if (event.action == KeyEvent.ACTION_UP) {
Log.wtf("delete", "up")
}
if (event.action == KeyEvent.ACTION_DOWN) {
Log.wtf("delete", "down")
}
} else {
if (event.action == KeyEvent.ACTION_UP) {
Log.wtf("another ", "up")
}
if (event.action == KeyEvent.ACTION_DOWN) {
Log.wtf("another", "down")
}
}
return true
}
Это правильное поведение?Разве события не будут вызываться только тогда, когда я нажимаю и нажимаю кнопку?