Javascript 在React Native中键盘关闭时的回调

Javascript 在React Native中键盘关闭时的回调,javascript,reactjs,react-native,Javascript,Reactjs,React Native,我的屏幕上有一个日期选择器和一个文本输入。为了避免难看的过渡,我想在显示日期选择器之前关闭键盘 目前,由于我不知道在键盘关闭时如何调用回调,我正在做如下操作: const showBirthdayPicker = () => { // Dismiss the keyboard to avoid ugly transitions Keyboard.dismiss(); setTimeout(() => { datePickerRef.curren

我的屏幕上有一个日期选择器和一个文本输入。为了避免难看的过渡,我想在显示日期选择器之前关闭键盘

目前,由于我不知道在键盘关闭时如何调用回调,我正在做如下操作:

 const showBirthdayPicker = () => {
    // Dismiss the keyboard to avoid ugly transitions
    Keyboard.dismiss();

    setTimeout(() => {
      datePickerRef.current.show();
    }, 500);
 };
这是可行的,但这个解决方案有一个问题。。。如果在运行此功能之前关闭键盘,用户将试验0.5秒的不必要延迟


还有别的办法吗?我一直在查看键盘的大小,但在关闭时没有回调。

根据文档,您可以收听keyboardDidHide事件以查看键盘是否关闭。下面是一个简单的例子

  const showBirthdayPicker = () => {
    // Dismiss the keyboard to avoid ugly transitions
    Keyboard.addListener('keyboardDidHide', onKeyboardDidHide);
    Keyboard.dismiss();
  };
  const onKeyboardDidHide = (event) => {
    Keyboard.removeListener('keyboardDidHide', onKeyboardDidHide);
    datePickerRef.current.show();
  };
根据文件

请注意,如果将android:WindowsOfInputMode设置为AdjustResizer或 调整PAN,将仅显示keyboardDidShow和keyboardDidHide事件 在Android上可用。如果将android:WindowsOfInputMode设置为 adjustNothing,Android上没有可用的事件。 keyboardWillShow和keyboardWillHide通常都不是 在Android上可用,因为没有本机对应事件


您可以在触发Disclose之前设置一个侦听器,然后将其删除。如果键盘是第一次被关闭,这个解决方案会显示日期选择器吗?我的意思是,回调是在键盘消失时执行的,或者如果它从一开始就隐藏了?这只会在键盘已经打开的情况下起作用。似乎我必须在整个组件生命周期中监听键盘的状态,并将其保存在“isKeyboardVisible”状态在您的解决方案中有条件地运行Keyboard.disclose…是的,如果您的用例是这样的,那么您可以添加另一个侦听器
keyboardDidShow
,将其放入构造函数以保存状态,然后有条件地运行代码。