我有一台霍尼韦尔扫描仪,可在扫描条形码时输出文字。 我可以将它用作文本输入的“键盘”,这非常方便,因为我不需要接口任何东西。 但它有一个缺点,即必须集中输入,从而显示移动设备的虚拟键盘,这对我正在进行的项目来说是不可接受的。
有没有办法在不需要聚焦输入的情况下扫描值?我相信听取keyPress事件或其类似事件的方法,将输入的值存储在textInput以外的变量中。
如果有更好的方法来实现这一点,我全都听见了!
答案 0 :(得分:2)
我知道react-native有一个键盘模块来控制keyboard events
键盘模块允许您侦听本机事件并对其作出反应,以及对键盘进行更改,例如解除它。
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}
/>
);
}
}
答案 1 :(得分:2)
好的,大家,找到了一种方法来做到这一点,而不会太疯狂。 它不是最优雅的解决方案,但它完全符合我的需要,并且不会为代码添加太多。
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。
<强>更新强>
几天前,当我们有时间重构这个组件时,一位同事对此有所帮助,我们发现在react-native-keyevent包中有一个名为onKeyMultipleListener
的监听器,它不仅可以监听多个同时按键,但也捕获整个输入,这正是我们在这里所需要的。