gpt4 book ai didi

javascript - 在 Nexus Player、Android Cordova 应用程序上打开虚拟键盘时键入第一个字符

转载 作者:太空宇宙 更新时间:2023-11-03 10:58:24 25 4
gpt4 key购买 nike

我知道这是针对特定设备的非常具体的问题,但我需要了解如何防止这种情况在一般情况下发生。

我有一个 ReactJS 应用程序,它使用 Cordova 为 Android 构建。受支持的设备之一是 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>
)
}

现在...因为这是一个导航应用程序,所以我有一个键盘监听器,可以监听我从组件上的 Remote 按下的任何键。我认为这可能是解决这个问题的方法。

  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 播放器。通常,在打开虚拟键盘时,我该怎么做才能防止按下额外的键?

最佳答案

这听起来有点愚蠢,但值得一试。尝试关闭键盘,取出电池,稍等片刻,然后将它们放回原处再试一次?当它重新启动时,它可能不会触发第一个键。另外,不确定为什么附加代码是相关的?

关于javascript - 在 Nexus Player、Android Cordova 应用程序上打开虚拟键盘时键入第一个字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51424134/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com