我正在尝试在react native
中制作这个OTP
(6位
)输入框。
会发生什么 - 当用户按下任何键(除了 backspace
键)时,它应该跳转到下一个框,当用户按下 backspace
键时,它应该跳到下一个框返回上一个框。
到目前为止,它在 iOS
上运行良好,然后当我在 Android
上检查时,它根本不会跳转到下一个框。我上网查了一下,发现Android
不支持onKeyPress
。如何在没有 onKeyPress
的情况下使其适用于 Android?我应该使用onChange
吗?但是我怎么知道用户是否按下了退格键
?
<TextInput
editable={editable}
value={input_1}
style={styles.inputBox}
keyboardType='number-pad'
ref={box_1}
// onChange={({ text }) => {
// setInput_1(text);
// }}
onFocus={() => {
}}
onKeyPress={({ nativeEvent }) => {
if (nativeEvent.key === 'Backspace') {
box1.current.focus();
} else {
focus(1);
}
}}
/>
谢谢。
最佳答案
文档说它在 Android 中工作,但来自 soft keyboard
不是hardware keyboard
我认为您可能会忽略硬件键盘。
docs这么说
Note: on Android only the inputs from soft keyboard are handled, not the hardware keyboard inputs.
soft keyboard
之间有什么不同和hardware keyboard
?
soft keyboard
(屏幕键盘或软件键盘)就像手机或平板电脑屏幕上的键盘。
hardware keyboard
(外部键盘)就像带 USB 的键盘(Android 支持)。
如果您在模拟器中测试,请尝试通过鼠标使用模拟器键盘,而不是电脑键盘。
如果您无法忽略硬件键盘
我建议使用这个库react-native-confirmation-code-field尝试零食here
或者按照库的方式,它使用一个不可见的组件,该组件将在组件上拉伸(stretch)。
关于javascript - React Native & TextInput : How to get what the use type one by one for Android?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68406305/