[英]Cordova app form doesn't scroll up when Android keyboard is opened
[英]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.