Возвращение true из onKeyDown останавливает распространение события в React native - PullRequest
0 голосов
/ 25 марта 2020

Я пытаюсь обнаружить событие 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 и в то же время я должен быть в состоянии получать длительные события обнаружения нажатия.

Заранее спасибо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...