diff --git a/RNTester/js/DatePickerIOSExample.js b/RNTester/js/DatePickerIOSExample.js index e58423cc077..7b006ae0fa3 100644 --- a/RNTester/js/DatePickerIOSExample.js +++ b/RNTester/js/DatePickerIOSExample.js @@ -131,16 +131,16 @@ exports.examples = [ }, }, { - title: 'Picker with 20-minute interval', + title: 'Time only picker, 20-minute interval', render: function(): React.Element { return ( {(state, onDateChange) => ( )} diff --git a/React/Views/RCTDatePicker.m b/React/Views/RCTDatePicker.m index 0bc1676d8b8..d86ef49961d 100644 --- a/React/Views/RCTDatePicker.m +++ b/React/Views/RCTDatePicker.m @@ -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