RCTDatePicker.m 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. /*
  2. * Copyright (c) Facebook, Inc. and its affiliates.
  3. *
  4. * This source code is licensed under the MIT license found in the
  5. * LICENSE file in the root directory of this source tree.
  6. */
  7. #import "RCTDatePicker.h"
  8. #import "RCTUtils.h"
  9. #import "UIView+React.h"
  10. @interface RCTDatePicker ()
  11. @property (nonatomic, copy) RCTBubblingEventBlock onChange;
  12. @property (nonatomic, assign) NSInteger reactMinuteInterval;
  13. @end
  14. @implementation RCTDatePicker
  15. - (instancetype)initWithFrame:(CGRect)frame
  16. {
  17. if ((self = [super initWithFrame:frame])) {
  18. [self addTarget:self action:@selector(didChange) forControlEvents:UIControlEventValueChanged];
  19. _reactMinuteInterval = 1;
  20. }
  21. return self;
  22. }
  23. RCT_NOT_IMPLEMENTED(-(instancetype)initWithCoder : (NSCoder *)aDecoder)
  24. - (void)didChange
  25. {
  26. if (_onChange) {
  27. _onChange(@{@"timestamp" : @(self.date.timeIntervalSince1970 * 1000.0)});
  28. }
  29. }
  30. - (void)setDatePickerMode:(UIDatePickerMode)datePickerMode
  31. {
  32. [super setDatePickerMode:datePickerMode];
  33. // We need to set minuteInterval after setting datePickerMode, otherwise minuteInterval is invalid in time mode.
  34. self.minuteInterval = _reactMinuteInterval;
  35. }
  36. - (void)setMinuteInterval:(NSInteger)minuteInterval
  37. {
  38. [super setMinuteInterval:minuteInterval];
  39. _reactMinuteInterval = minuteInterval;
  40. }
  41. @end