我一直在研究一个项目,该项目需要从应用程序中任何位置的外部键盘(实际上是手持式条形码扫描仪)捕获击键。使用react-native,这应该是微不足道的,尤其是对于库react-native-keyevent。
在初始负载下完美工作。然后,我导航到应用程序的另一部分(使用react-navigation)并尝试扫描条形码。没发生什么事。我用一些简单的react-native-keyevent
替换了MainActivity.java
覆盖Log.d("KeyEvents", "...")
,覆盖了dispatchKeyEvent
,onKeyUp
,onKeyMultiple
和onKeyDown
。我只登录,然后叫超级。
相同的行为。记录良好,直到我导航,然后停止。在研究了Android文档之后,Views似乎可以覆盖键处理程序,从而“窃取”键击。但是,我一直坚持要找出哪个视图会成为焦点。同样,默认情况下,react-native中实际上没有键盘处理功能,因此据我了解,所有内容都应传递给活动。
我无所事事地在反应本机代码库中徘徊,偶然发现TVEventHandler
,如果视图请求焦点,我用它记录日志:
import TVEventHandler from 'react-native/Libraries/Components/AppleTV/TVEventHandler';
(new TVEventHandler).enable('foo', function(){
console.log(arguments);
})
在处理程序停止工作之前,此行确实记录了一些带有视图标签的focus
事件。但是,我不知道如何找出具有特定标签的视图。
有人可以向我指出正确的方向吗?