Android 版 TextInput 上的 onKeyPress 方法

Gui*_*sch 5 android textinput onkeypress react-native

我一直试图在一个输入TextInput中捕捉键盘的事件react-native

通过阅读组件的文档(https://facebook.github.io/react-native/docs/textinput.html),我注意到该onKeyPress函数完全符合我的需要。但它被标记为ios唯一。android除了这个问题(https://github.com/facebook/react-native/issues/1882)之外,我没有找到任何关于解决方法的信息,这个问题已经有几个月没有活动了......

我需要做的是在Backspace按下时调用一个特定的方法,看起来它只能暂时完成ios......

你们知道任何解决方法吗?

提前致谢 :)

Gia*_* P. 6

onKeyPress 现在支持安卓。

从版本v0.55.2提交

请注意,Android 不支持硬件键盘输入,仅支持软键盘输入。

意思是,如果您在 Android 模拟器上测试并在计算机键盘上输入,则不会处理这些输入。所以,继续用鼠标按下模拟器上的软键盘。


小智 2

我也遇到过这个问题。我可以告诉你,我做了什么。它并不优雅,但它可以完成这项工作,直到它也为 Android 实现为止。

在Android中你可以在Activity中处理按键事件。此外,您还可以将事件发送到 JavaScript。这就是您所需要的一切。

在js文件(例如componentDidMount)中添加监听器。

DeviceEventEmitter.addListener('onKeyPressed', yourFunction)
Run Code Online (Sandbox Code Playgroud)

在您的 MainActivity 中添加类似的内容。

public boolean onKeyUp(int keyCode, KeyEvent event) {
   WritableMap params;
   // params.put something
   // filter only Backspace events if you wish etc.
   reactContext.getJSModule(DeviceEventManagerModule.RCTDeviceEventEmitter.class)
                           .emit("onKeyPressed", params);
}
Run Code Online (Sandbox Code Playgroud)

每次按下按键时都会发送该信息。不要忘记删除侦听器(例如,componentDidUnmount 或当您不再需要它时)。另外,如果您有多个TextInput,请跟踪重点,以免混淆。

希望这可以帮助。

  • 这仅适用于硬件键盘事件。当我在屏幕键盘上按下退格键时,它不会触发。 (2认同)