Fixed minuteInterval invalid in time mode (#23923)

Summary:
From https://github.com/facebook/react-native/pull/23861#issue-260337314
> changing "interval" example from "time-only" to "datetime" because there's a known bug that prevented the previous example from working

We need to ensure set minuteInterval after set datePickerMode, otherwise minuteInterval invalid in time mode.

cc. grabbou cpojer .

[iOS] [Fixed] - Fixed minuteInterval invalid in time mode
Pull Request resolved: https://github.com/facebook/react-native/pull/23923

Differential Revision: D14477549

Pulled By: cpojer

fbshipit-source-id: 2c612d488b6d592b1907e150df5e07fe83132829
This commit is contained in:
zhongwuzw
2019-03-15 11:18:36 -07:00
committed by Facebook Github Bot
parent 40de0495b9
commit 942bf4054d
2 changed files with 18 additions and 3 deletions

View File

@@ -131,16 +131,16 @@ exports.examples = [
},
},
{
title: 'Picker with 20-minute interval',
title: 'Time only picker, 20-minute interval',
render: function(): React.Element<any> {
return (
<WithDatePickerData>
{(state, onDateChange) => (
<DatePickerIOS
testID="date-and-time-with-interval"
testID="time-with-interval"
date={state.date}
minuteInterval={20}
mode="datetime"
mode="time"
onDateChange={onDateChange}
/>
)}

View File

@@ -13,6 +13,7 @@
@interface RCTDatePicker ()
@property (nonatomic, copy) RCTBubblingEventBlock onChange;
@property (nonatomic, assign) NSInteger reactMinuteInterval;
@end
@@ -23,6 +24,7 @@
if ((self = [super initWithFrame:frame])) {
[self addTarget:self action:@selector(didChange)
forControlEvents:UIControlEventValueChanged];
_reactMinuteInterval = 1;
}
return self;
}
@@ -36,4 +38,17 @@ RCT_NOT_IMPLEMENTED(- (instancetype)initWithCoder:(NSCoder *)aDecoder)
}
}
- (void)setDatePickerMode:(UIDatePickerMode)datePickerMode
{
[super setDatePickerMode:datePickerMode];
// We need to set minuteInterval after setting datePickerMode, otherwise minuteInterval is invalid in time mode.
self.minuteInterval = _reactMinuteInterval;
}
- (void)setMinuteInterval:(NSInteger)minuteInterval
{
[super setMinuteInterval:minuteInterval];
_reactMinuteInterval = minuteInterval;
}
@end