反应本机安卓键盘事件

时间:2017-06-15 09:14:51

标签: android keyboard-events react-native-android

我一直在尝试创建自定义反应原生自定义键盘事件。 具体来说,我一直试图检测退格键。

在我的 MainApplication.java

public boolean onKeyUp(int keyCode, KeyEvent event) {

  // Filter for delete key being pressed
  if (event.getAction() == KeyEvent.DEL) {
    getReactNativeHost().getReactInstanceManager().getCurrentRea‌​ctContext()
    .getJSModule(DeviceEventManagerModule.RCTDeviceEventEmitter.class)
    .emit("onKeyPressed", keyCode);
  }
  return true;
}

在我的反应组件中

componentDidMount() {
  if (Platform.OS === 'android') {
    DeviceEventEmitter.addListener('onKeyPressed', this.handleKeyPress);
  }
}

componentWillUnmount() {
    if (Platform.OS === 'android') {
      DeviceEventEmitter.removeListener('onKeyPressed');
    }
}

有人可以告诉我为什么事件没有被解雇?

1 个答案:

答案 0 :(得分:0)

对android开发做了一些研究。

使用Keyevents检测按下的按键是不可靠的。

https://developer.android.com/reference/android/view/KeyEvent.html

  

由于软输入法可以使用多种创造性的输入方式   文字,无法保证软键盘上的任何按键都会   生成一个关键事件:这由IME自行决定,并在   不鼓励发送此类事件。