Виртуальная клавиатура, печатающая первый символ при ее открытии в 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 ответ
Это может звучать немного глупо, но стоит попробовать. Попробуйте выключить клавиатуру, вынуть батарейки, немного подождать, затем положить их обратно и попробовать снова? Когда он перезапускается, он может не запустить этот первый ключ. Также не уверен, почему приложенный код актуален?