React Native - BackHandler не работает, когда клавиатура находится в открытом состоянии. - PullRequest
1 голос
/ 30 января 2020

Мне нужно закрыть вид с помощью setState при закрытии клавиатуры. Используя событие onBlur в TextInput, оно работает нормально. Но в android при нажатии аппаратной кнопки назад также закрывается клавиатура. Но событие onBlur не было вызвано. TextInput все еще сфокусирован, но клавиатура закрыта. Для backhander, я использую следующий код,

componentWillMount() {
    BackHandler.addEventListener('hardwareBackPress', this.handleBackPress);
}

handleBackPress = () => {
    console.log("HANDLE BACK PRESSS")
    return true;
}

Также я попробовал следующее - Keyboard.addListener

componentWillMount () {
    this.keyboardDidShowListener = Keyboard.addListener('keyboardDidShow', this._keyboardDidShow);
    this.keyboardDidHideListener = Keyboard.addListener('keyboardDidHide', this._keyboardDidHide);
}

componentWillUnmount() {
    this.keyboardDidShowListener.remove();
    this.keyboardDidHideListener.remove();
}

_keyboardDidShow() {
    alert('Keyboard Shown');
  }

_keyboardDidHide = () => {
    alert('Keyboard Hidden');
}

Но бесполезно. Эти вещи не запускаются, когда клавиатура находится в открытом состоянии. После закрытия клавиатуры все работает как положено.

Предложите какой-нибудь способ получить триггер при нажатии кнопки назад, когда клавиатура находится в открытом состоянии.

1 Ответ

0 голосов
/ 30 января 2020

Попробуйте это:

import {Keyboard} из'act-native '

componentDidMount() {
   this.keyboardDidHideListener = Keyboard.addListener('keyboardDidHide', 
   this.keyboardDidHide);
}
componentWillUnmount() {
    this.keyboardDidHideListener.remove();
}
keyboardDidHide = () => {
     Keyboard.dismiss();
};
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...