React Native - 当键盘处于打开状态时,返回按钮不起作用

3

我需要使用setState关闭视图,同时关闭键盘。在TextInput中使用onBlur事件,效果很好。但是在Android上,按下硬件返回按钮也会关闭键盘。但onBlur事件没有被调用。TextInput仍然处于焦点状态,但键盘却关闭了。 对于后备操作,我正在使用以下代码:

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');
}

但是没有用。当键盘处于打开状态时,这些事情不会被触发。在键盘关闭后,一切都按预期工作。

建议提供一种方法,在键盘处于打开状态时按“返回”按钮触发事件。


你找到出路了吗? - undefined
你找到解决办法了吗? - undefined
1个回答

1

试试这个:

import { Keyboard } from 'react-native'

componentDidMount() {
   this.keyboardDidHideListener = Keyboard.addListener('keyboardDidHide', 
   this.keyboardDidHide);
}
componentWillUnmount() {
    this.keyboardDidHideListener.remove();
}
keyboardDidHide = () => {
     Keyboard.dismiss();
};

1
是的,我们正在使用键盘组件。在安卓系统中按下硬件返回按钮时,我们无法在keyboardDidHide方法中触发相应的事件。这就是实际的问题。 - undefined
componentDidMount() { this.backHandler = BackHandler.addEventListener('hardwareBackPress', this.handleBackPress); } componentWillUnmount() { this.backHandler.remove() } handleBackPress = () => { this.goBack(); // works best when the goBack is async return true; } - undefined
1
请再次检查问题。我正在使用相同的方法。但问题是,当键盘打开时,这个后台程序没有收到任何触发信号。如果键盘关闭,它就正常工作。 - undefined

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接