#javascript #android #reactjs #react-native #datepicker
#javascript #Android #reactjs #react-native #datepicker
Вопрос:
Недавно я создал экран блокировки с защитой от отпечатков пальцев для своего приложения react-native. По сути, когда пользователь покидает приложение и возвращается позже, появляется этот экран. Однако вчера я обнаружил, что на Android, если я открываю средство выбора даты, затем выхожу из приложения и возвращаюсь снова, средство выбора даты все еще существует:
Я использую react-native-datepicker, который внутренне использует DatePickerAndroid и TimePickerAndroid.
Есть ли какой-нибудь способ закрыть средство выбора даты программно?
Ответ №1:
Это указано в самом документе, в нем есть метод, который называется onPressCancel()
Поэтому вам может потребоваться взять ссылку на datapicker, и тогда вызов метода с использованием этой ссылочной переменной поможет. Вы можете просто скрыть dataPicker в unmount
или где-нибудь еще.
что-то вроде
this.picker.onPressCancel();
проверьте ссылку
Комментарии:
1. Метод, который вы упомянули, — это обратный вызов, запускаемый нажатием кнопки отмены.
2. Я думаю, вам следует прочитать описание там, оно четко написано
onPressCancel - Manually close the date picker panel like, similarly pressing cancel btn
3. В документации не сказано, что он работает только на ios
Ответ №2:
Дайте ссылку на средство выбора даты
<DatePicker
ref={ref => this.datePicker = ref}
/>
чтобы закрыть средство выбора даты onPressCancel()
, используйте этот метод
this.datePicker.onPressCancel()
Ответ №3:
Добавьте это в свой onChange Prop
if (Platform.OS !== 'ios') {
setShowDatePicker(false); /* Or whatever you're using to set the state to false*/
}
Ответ №4:
Это сработало для меня:
componentDidMount() {
this.listeners = [
addListener('didFocus', () => {
console.log("didFocus");
}),
addListener('willBlur', () => {
console.log("willBlur");
this.datePicker.onPressCancel();
}),
];
}