Я пытаюсь обнаружить событие LongPress любых клавиш. Вот MainActivity. java
@Override
public boolean onKeyDown( int keyCode, KeyEvent event ) {
if(Seek.LONG_SEEK_BUTTONS.contains(keyCode)) {
event.startTracking();
Log.e(LOG_TAG,"onKeyDown"+event.toString());
Log.e(LOG_TAG,"keyevent "+event.isLongPress());
return true;
}
return super.onKeyDown( keyCode, event );
}
@Override
public boolean onKeyLongPress( int keyCode, KeyEvent event ) {
if(Seek.LONG_SEEK_BUTTONS.contains(keyCode) ) {
seekManager.OnLongKeyPress(keyCode, event);
Log.e(LOG_TAG,"onKeyLongPress"+event.toString());
Log.e(LOG_TAG,"keyevent "+event.isLongPress());
return true;
}
return super.onKeyLongPress( keyCode, event );
}
@Override
public boolean onKeyUp(int keyCode, KeyEvent event) {
if(mReactInstanceManager != null) {
seek.OnKeyUp(keyCode, event);
}
return super.onKeyUp(keyCode, event);
}
Это работает, и я получаю звонки в onKeyLongPress. Но это создает еще одну проблему в React native layer. Теперь я не могу использовать d-pad влево, вправо вверху, внизу, чтобы выбрать любой элемент. Насколько я понимаю, это происходит потому, что я посылаю событие true в ключе вниз, что останавливает дальнейшее распространение события, и уровень RN никогда не получает никакой команды для перемещения курсора.
Чтобы исправить эту ошибку, если я просто верну super.onKeyDown( keyCode, event );
из onKeyDown, тогда элементы управления уровня RN работают в соответствии с ожиданиями, но я больше не могу принимать вызовы в onKeyLongPress обработчик событий.
Как я могу исправить ошибку выбора элемента управления в Слой RN и в то же время я должен быть в состоянии получать длительные события обнаружения нажатия.
Заранее спасибо