JXDatePicker.m 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111
  1. //
  2. // JXDatePicker.m
  3. // shiku_im
  4. //
  5. // Created by flyeagleTang on 15-1-7.
  6. // Copyright (c) 2015年 Reese. All rights reserved.
  7. //
  8. #import "JXDatePicker.h"
  9. @implementation JXDatePicker
  10. @synthesize delegate,didCancel,datePicker,didSelect,didChange;
  11. - (id)initWithFrame:(CGRect)frame{
  12. int h = 26;
  13. self = [super initWithFrame:frame];
  14. if (self) {
  15. self.hint = Localized(@"JXDatePicker_Sel");
  16. // self.backgroundColor = [UIColor colorWithRed:0.9 green:0.9 blue:0.9 alpha:1];
  17. self.backgroundColor = [UIColor whiteColor];
  18. datePicker = [[UIDatePicker alloc]initWithFrame:CGRectMake(0, h, frame.size.width, 200-h)];
  19. datePicker.datePickerMode = UIDatePickerModeDateAndTime;
  20. datePicker.backgroundColor = [UIColor whiteColor];
  21. datePicker.date = [NSDate date];
  22. datePicker.maximumDate = [NSDate date];
  23. [datePicker addTarget:self action:@selector(onDate:) forControlEvents:UIControlEventValueChanged];
  24. [self addSubview:datePicker];
  25. // [datePicker release];
  26. NSLocale *p = [[NSLocale alloc] initWithLocaleIdentifier:@"zh_CN"];
  27. datePicker.locale = p;
  28. // [p release];
  29. _sel = [[JXLabel alloc] initWithFrame:CGRectMake(h, 0, frame.size.width-h*2, h)];
  30. _sel.font = g_factory.font16;
  31. _sel.textAlignment = NSTextAlignmentCenter;
  32. _sel.textColor = [UIColor grayColor];
  33. _sel.delegate = self;
  34. _sel.didTouch = @selector(onClose);
  35. [self addSubview:_sel];
  36. // [_sel release];
  37. JXImageView* iv = [[JXImageView alloc]initWithFrame:CGRectMake(0, 0, h, h)];
  38. iv.image = [UIImage imageNamed:@"title_back"];
  39. iv.delegate = self;
  40. iv.didTouch = @selector(onClose);
  41. [self addSubview:iv];
  42. // [iv release];
  43. iv = [[JXImageView alloc]initWithFrame:CGRectMake(frame.size.width-h, 0, h, h)];
  44. iv.image = [UIImage imageNamed:@"icon_selected"];
  45. iv.delegate = self;
  46. iv.didTouch = @selector(onSelect);
  47. [self addSubview:iv];
  48. // [iv release];
  49. }
  50. return self;
  51. }
  52. -(void)dealloc{
  53. self.hint = nil;
  54. // [super dealloc];
  55. }
  56. -(void)onClose{
  57. [self removeFromSuperview];
  58. if (delegate && [delegate respondsToSelector:didCancel])
  59. // [delegate performSelector:didCancel withObject:nil];
  60. [delegate performSelectorOnMainThread:didCancel withObject:nil waitUntilDone:NO];
  61. }
  62. -(void)onSelect{
  63. [self removeFromSuperview];
  64. if (delegate && [delegate respondsToSelector:didSelect])
  65. // [delegate performSelector:didSelect withObject:self];
  66. [delegate performSelectorOnMainThread:didSelect withObject:self waitUntilDone:NO];
  67. }
  68. - (void)onDate:(UIView*)sender{
  69. NSString* s = nil;
  70. if(datePicker.datePickerMode == UIDatePickerModeDateAndTime)
  71. s = @"yyyy-MM-dd HH:mm";
  72. if(datePicker.datePickerMode == UIDatePickerModeDate)
  73. s = @"yyyy-MM-dd";
  74. if(datePicker.datePickerMode == UIDatePickerModeTime)
  75. s = @"HH:mm:ss";
  76. _sel.text = [NSString stringWithFormat:@"%@:%@",self.hint,[TimeUtil formatDate:datePicker.date format:s]];
  77. if(sender)
  78. if (delegate && [delegate respondsToSelector:didChange])
  79. // [delegate performSelector:didChange withObject:self];
  80. [delegate performSelectorOnMainThread:didChange withObject:self waitUntilDone:NO];
  81. }
  82. -(NSDate*)date{
  83. return datePicker.date;
  84. }
  85. -(void)setDate:(NSDate *)p{
  86. datePicker.date = p;
  87. [self onDate:nil];
  88. }
  89. - (void)didMoveToSuperview{
  90. datePicker.tag = self.tag;
  91. [self onDate:nil];
  92. [super didMoveToSuperview];
  93. }
  94. @end