我有一个霍尼韦尔扫描仪,可以在扫描条形码时输出文本。我可以将它用作文本输入的“键盘”,这非常方便,因为我不必进行任何接口。但它的缺点是必须聚焦输入并因此显示移动设备的虚拟键盘,这对于我正在处理的项目来说是不可接受的。
有什么方法可以在无需聚焦输入的情况下获取扫描值?我相信侦听 keyPress 事件或类似事件将是可行的方法,将输入的值存储在 textInput 之外的其他变量中。
如果有更好的方法来实现这一点,我全神贯注!
我有一个霍尼韦尔扫描仪,可以在扫描条形码时输出文本。我可以将它用作文本输入的“键盘”,这非常方便,因为我不必进行任何接口。但它的缺点是必须聚焦输入并因此显示移动设备的虚拟键盘,这对于我正在处理的项目来说是不可接受的。
有什么方法可以在无需聚焦输入的情况下获取扫描值?我相信侦听 keyPress 事件或类似事件将是可行的方法,将输入的值存储在 textInput 之外的其他变量中。
如果有更好的方法来实现这一点,我全神贯注!
好吧,大家,找到了一种方法来做到这一点,而不会太疯狂。这不是最优雅的解决方案,但它正是我所需要的,并且不会向代码中添加太多内容。
import { Keyboard, TextInput } from 'react-native';
...
<TextInput
autoFocus
onFocus={() => Keyboard.dismiss()} />
这里的游戏名称是autoFocus
和onFocus={() => Keyboard.dismiss()} />
。
现在我将按照@MattAft 的建议使用https://www.npmjs.com/package/react-native-keyevent来监听按键(不幸的是,这个包不会给我实际的扫描仪输入。但是,它会,触发 keyDown 事件)以在扫描仪读取内容时聚焦 TextInput。
更新
几天前,当我们有时间重构这个组件时,一位同事帮了我一些忙,我们发现onKeyMultipleListener
在 react-native-keyevent 包上有一个侦听器,它不仅侦听多个同时发生的 keyPresses,而且捕获整个输入,这正是我们在这里需要的。
我知道 react-native 有一个键盘module来控制键盘事件
键盘module允许您侦听本机事件并对它们做出react,以及对键盘进行更改,例如关闭它。
import React, { Component } from 'react';
import { Keyboard, TextInput } from 'react-native';
class Example extends Component {
componentWillMount () {
this.keyboardDidShowListener = Keyboard.addListener('keyboardDidShow', this._keyboardDidShow);
this.keyboardDidHideListener = Keyboard.addListener('keyboardDidHide', this._keyboardDidHide);
}
componentWillUnmount () {
this.keyboardDidShowListener.remove();
this.keyboardDidHideListener.remove();
}
_keyboardDidShow () {
alert('Keyboard Shown');
}
_keyboardDidHide () {
alert('Keyboard Hidden');
}
render() {
return (
<TextInput
onSubmitEditing={Keyboard.dismiss}
/>
);
}
}