'keyboardDidHide' возвращает null вместо объекта

В настоящее время я работаю над приложением react-native и пытаюсь анимировать макет экрана входа в систему, когда отображается клавиатура.

Чтобы отслеживать состояние клавиатуры, я использую этот код:

componentDidMount() {
    this.keyboardDidShowSub = Keyboard.addListener('keyboardDidShow', (event) => console.info(event));
    this.keyboardDidHideSub = Keyboard.addListener('keyboardDidHide', (event) => console.info(event));
}

keyboardDidShow работает и возвращается:

Object {
   "endCoordinates": Object {
     "height": 286,
     "screenX": 0,
     "screenY": 354,
     "width": 360,
   },
}

Однако keyboardDidHide НЕ работает и не возвращается null.

Что может вызвать мою проблему? Большое вам спасибо за вашу помощь!!

Умерло ли Create-React-App?
Умерло ли Create-React-App?
В этом документальном фильме React.dev мы исследуем, мертв ли Create React App (CRA) и какое будущее ждет этот популярный фреймворк React.
Освоение React Native: Пошаговое руководство для начинающих
Освоение React Native: Пошаговое руководство для начинающих
React Native - это популярный фреймворк с открытым исходным кодом, используемый для разработки мобильных приложений. Он был разработан компанией...
В чем разница между react native и react ?
В чем разница между react native и react ?
React и React Native - два популярных фреймворка для создания пользовательских интерфейсов, но они предназначены для разных платформ. React - это...
От React к React Native: Руководство для начинающих по разработке мобильных приложений с использованием React
От React к React Native: Руководство для начинающих по разработке мобильных приложений с использованием React
Если вы уже умеете работать с React, создание мобильных приложений для iOS и Android - это новое приключение, в котором вы сможете применить свои...
Хуки React: что это такое и как их использовать
Хуки React: что это такое и как их использовать
Хуки React - это мощная функция библиотеки React, которая позволяет разработчикам использовать состояние и другие возможности React без написания...
1
0
383
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Это ожидаемое поведение в Android. Если вы посмотрите на базовый код родной, который вызывается, когда клавиатура отображается/скрывается, вы можете увидеть, что отправляется обратно на сторону javascript.

private void checkForKeyboardEvents() {
  getRootView().getWindowVisibleDisplayFrame(mVisibleViewArea);
  final int heightDiff =
    DisplayMetricsHolder.getWindowDisplayMetrics().heightPixels - mVisibleViewArea.bottom;
  if (mKeyboardHeight != heightDiff && heightDiff > mMinKeyboardHeightDetected) {
    // keyboard is now showing, or the keyboard height has changed
    mKeyboardHeight = heightDiff;
    WritableMap params = Arguments.createMap();
    WritableMap coordinates = Arguments.createMap();
    coordinates.putDouble("screenY", PixelUtil.toDIPFromPixel(mVisibleViewArea.bottom));
    coordinates.putDouble("screenX", PixelUtil.toDIPFromPixel(mVisibleViewArea.left));
    coordinates.putDouble("width", PixelUtil.toDIPFromPixel(mVisibleViewArea.width()));
    coordinates.putDouble("height", PixelUtil.toDIPFromPixel(mKeyboardHeight));
    params.putMap("endCoordinates", coordinates);
    sendEvent("keyboardDidShow", params);
  } else if (mKeyboardHeight != 0 && heightDiff <= mMinKeyboardHeightDetected) {
    // keyboard is now hidden
    mKeyboardHeight = 0;
    sendEvent("keyboardDidHide", null); // <- you can see here that when the keyboard is hidden it sends back null
  }
}

Стоит отметить, что в iOS эти 'keyboardWillShow', 'keyboardDidShow', 'keyboardWillHide' и 'keyboardDidHide' вернут объект.

Другие вопросы по теме