反应原生键盘事件不适用于android:windowSoftInputMode =“ adjustNothing”

时间:2018-10-17 07:28:18

标签: android react-native

当显示键盘时,我试图仅调整视图的一个组成部分,因此我设置了 在我的Android清单文件中“ adjustNothing” ,我使用“ keyboardDidHide” 事件监听器和 TextInput onFocus 处理组件的移动。我尝试了这个,但是键盘隐藏时我没有从监听器得到任何东西...

这是我的AnidroidManifest文件:     

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

<application
  android:name=".MainApplication"
  android:label="@string/app_name"
  android:icon="@mipmap/ic_launcher"
  android:allowBackup="false"
  android:theme="@style/AppTheme">
  <activity
    android:name=".MainActivity"
    android:label="@string/app_name"
    android:configChanges="keyboard|keyboardHidden|orientation|screenSize"
    android:screenOrientation="portrait"
    android:windowSoftInputMode="adjustNothing">
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
  </activity>
  <activity android:name="com.facebook.react.devsupport.DevSettingsActivity" />
</application>

这是键盘隐藏时我想做的事情

keyboardDidHide() {
this.animateS(false);
}

因此它会恢复原状。

我尝试过使用 adjustResize adjustPan ,但是他们将整个视图向上移动,我不希望这样。 该动画是显示键盘时向上和向下隐藏事件触发器时的简单转换。

在文档中:

  

请注意,如果您将android:windowSoftInputMode设置为AdjustResize或       AdjustNothing,将只有keyboardDidShow和keyboardDidHide事件是       在Android上可用   https://facebook.github.io/react-native/docs/keyboard

这是本机反应的错误,还是我做错了什么主意?

2 个答案:

答案 0 :(得分:0)

这是React Native文档中的错误。

andreicoman11this reply中对github问题所述:... keyboard events are actually not triggered with adjustNothing because of the way it's implemented, and unfortunately there's no way around that ...

React native无法在https://facebook.github.io/react-native/docs/keyboard上记录该事件

答案 1 :(得分:-2)

将配置参数“ adjustNothing”更改为“ adjustPan”可以解决我的问题。仅“ adjustPan”,不设置“ adjustResize”。