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
,将其放入构造函数以保存状态,然后有条件地运行代码。