簡體   English   中英

在Nexus Player,Android Cordova應用程序上打開虛擬鍵盤時輸入第一個字符

[英]Virtual keyboard typing first character when it is opened on Nexus Player, Android Cordova app

我知道這是特定設備上的一個非常具體的問題,但我需要了解如何防止這種情況發生。

我有一個ReactJS應用程序,它使用Cordova構建Android。 其中一個受支持的設備是Nexus Player。 出於某種原因,僅在nexus播放器上,當我打開虛擬鍵盤時,它會立即輸入第一個字符。 這通常是我最后離開字符選擇器的地方。

所以說我有一個電子郵件輸入,如果我輸入myemail@email.com並轉到下一個輸入字段,當我打開虛擬鍵盤時它將輸入m 當然,如果用戶離開虛擬鍵盤,例如Enter鍵,這將從輕微的麻煩變為實際問題,這將阻止其被打開和/或立即提交表格。 我目前沒有關於如何處理它的想法。

對於輸入我使用受控組件並通過狀態設置它,因此render函數看起來像這樣:

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播放器。 通常,我可以做什么來防止在打開虛擬鍵盤時按下額外的鍵?

這可能聽起來有些愚蠢,但值得一試。 嘗試關閉鍵盤,拿出電池,等一下,然后把它們放回去再試一次? 當它重新啟動時,它可能不會觸發第一個鍵。 另外,不確定為什么附加的代碼是相關的?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM