首页 > 解决方案 > React Native:当 android:windowSoftInputMode 设置为“adjustNothing”时,keyboardDidShow 侦听器未触发

问题描述

我已经 android:windowSoftInputMode="adjustNothing" 在 AndroidManifest.xml 中设置了

为键盘添加了监听器:

componentDidMount() 
    this.keyboardDidShowListener = Keyboard.addListener('keyboardDidShow', this._keyboardDidShow);
  }

定义函数:

_keyboardDidShow = () => {  
    console.log('_keyboardDidShow called');
}

但从_keyboardDidShow不调用 when android:windowSoftInputMode="adjustNothing"。它在android:windowSoftInputMode="adjustResize"或时工作正常android:windowSoftInputMode="adjustPan"

从文档:

请注意,如果您将 android:windowSoftInputMode 设置为 adjustResize 或 adjustNothing,则只有 keyboardDidShow 和 keyboardDidHide 事件在 Android 上可用。keyboardWillShow 和keyboardWillHide 通常在Android 上不可用,因为没有原生的对应事件。

键盘参考

我看过:

https://github.com/facebook/react-native/issues/2852(看起来像一个开放的错误)
React Native 键盘事件不适用于 android:windowSoftInputMode="adjustNothing"(解决方案:将 windowSoftInputMode 设置为 adjustPan)

我不能android:windowSoftInputMode设置任何东西adjustNothing

有人对此问题有解决方案或解决方法吗?
.
.
.
2020 年 1 月更新:文档已更新为

请注意,如果您将 android:windowSoftInputMode 设置为 adjustResize,则只有 keyboardDidShow 和 keyboardDidHide 事件在 Android 上可用。如果您将 android:windowSoftInputMode 设置为 adjustNothing,则 Android 上将没有可用的事件。keyboardWillShow 和keyboardWillHide 通常在Android 上不可用,因为没有原生的对应事件。

标签: androidreact-nativereact-native-android

解决方案


推荐阅读