Виртуальная клавиатура, печатающая первый символ при ее открытии в Nexus Player, приложении Android Cordova

Я знаю, что это очень специфический вопрос для конкретного устройства, но мне нужно кое-что понять, как этого избежать в целом.

У меня есть приложение ReactJS, которое имеет сборку для Android с использованием Cordova. Одним из поддерживаемых устройств является Nexus Player. По какой-то причине ТОЛЬКО на плеере Nexus, когда я открываю виртуальную клавиатуру, он сразу набирает первый символ. Это обычно там, где я оставлял селектор символов последним.

Скажем, у меня есть адрес электронной почты, если я наберу myemail@email.com и перейдите к следующему полю ввода, когда я открою виртуальную клавиатуру, она наберет m, Конечно, это превращается из небольшого неудобства в реальную проблему, если пользователь оставляет виртуальную клавиатуру, скажем, Enter ключ, который заблокирует его от открытия и / или немедленно отправит формы. У меня сейчас нет идей, как с этим бороться.

Для входов я использую управляемый компонент и настраиваю его через состояние, поэтому функция рендеринга выглядит примерно так:

render () {
  return (
    <form onSubmit={onSubmit} role='form' className='form'>
      <div className='form-group'>
        <div data-focusable data-focus-container>
          <input
            type='text'
            className='form-control'
            value={myValue}
            onChange={evt => this.setState({myValue: evt.target.value})}
            data-focusable
          />
        </div>
      </div>
    </form>
  )
}

Теперь... Поскольку это навигационное приложение, у меня есть прослушиватель клавиатуры, который слушает любую клавишу, которую я нажимаю с пульта на моем компоненте. Я думаю, что это может быть способ справиться с этой проблемой.

  keydownHandler(evt) {
    if (isDeviceNexuPlayer()) {

      if (keyCodeIs('select', evt)) {
        // do something to stop the first key from being immediately pressed
        console.log('this is being called as expected')
      }
    }
  })

Как говорится в console.log, это работает, как и ожидалось. Что мне нужно знать, так это как я могу остановить запуск первого ключа. Я попробовал несколько вещей, так что ничего не получилось:

  • evt.stopPropagation(): ничего не делает, все еще нажимает первую клавишу при открытии виртуальной клавиатуры
  • evt.stopImmediatePropagation(): Останавливает все до такой степени, что не позволяет ни одному ключу работать даже после его открытия

Я не знаю, что еще делать. Я думаю, что это даже не относится только к игроку Nexus. В общем, что я могу сделать, чтобы предотвратить нажатие этой дополнительной клавиши при открытии виртуальной клавиатуры?

1 ответ

Это может звучать немного глупо, но стоит попробовать. Попробуйте выключить клавиатуру, вынуть батарейки, немного подождать, затем положить их обратно и попробовать снова? Когда он перезапускается, он может не запустить этот первый ключ. Также не уверен, почему приложенный код актуален?

Другие вопросы по тегам