首页 > 解决方案 > 当 TalkBack 开启时,我不再从导航按钮(上、下、左、右)获得 KeyEvents

问题描述

我正在使用 React Native 和辅助功能(TalkBack)。我面临的问题 - 当 TalkBack 打开时,我的 KeyEvent 侦听器没有在遥控器上注册我的导航按钮。感觉就像 TalkBack 劫持了他们自己的导航。我将在 JAVA 中附加我的 KeyEvent 侦听器。当 TalkBack 开启时,我需要我的 KeyEvents 工作。

/ @Override  // <--- Add this method if you want to react to keyDown
      public boolean onKeyDown(int keyCode, KeyEvent event) {

        // A. Prevent multiple events on long button press
        //    In the default behavior multiple events are fired if a button
        //    is pressed for a while. You can prevent this behavior if you
        //    forward only the first event:
        int keyCode1 = event.getKeyCode();
        Log.d("keyDownTest:", Integer.toString(keyCode1));
        if (event.getRepeatCount() == 0) {
            KeyEventModule.getInstance().onKeyDownEvent(keyCode, event);
        }
        //
        // B. If multiple Events shall be fired when the button is pressed
        //    for a while use this code:
        //        KeyEventModule.getInstance().onKeyDownEvent(keyCode, event);
        //
        // Using B.
        // KeyEventModule.getInstance().onKeyDownEvent(keyCode, event);

        // There are 2 ways this can be done:
        //  1.  Override the default keyboard event behavior
        //    super.onKeyDown(keyCode, event);
        //    return true;

        //  2.  Keep default keyboard event behavior
        //    return super.onKeyDown(keyCode, event);

        // Using method #1 without blocking multiple
        super.onKeyDown(keyCode, event);
        return true;
      }

标签: javaandroidreact-nativeaccessibilitytalkback

解决方案


推荐阅读