新建一个界面GBDatePickerViewController在里面初始化相关数据
- (void) setupCtrl
{
//背景
self.bgImageView = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, SCREEN_WIDTH, SCREEN_HEIGHT)];
self.bgImageView.backgroundColor = [UIColor blackColor];
self.bgImageView.alpha = 0.5;
self.bgImageView.userInteractionEnabled = YES;
[self.view addSubview:self.bgImageView];
UITapGestureRecognizer *tapGesture = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(hideDatePicker:)];
tapGesture.numberOfTapsRequired = 1;
tapGesture.numberOfTouchesRequired = 1;
tapGesture.delegate = self;
[self.bgImageView addGestureRecognizer:tapGesture];
CGFloat height = kSetDateViewHeight;
GBSetDateView *setDateView = [[GBSetDateView alloc] initWithFrame:CGRectMake(0,SCREEN_HEIGHT-kIphone6ScaleH(height), SCREEN_WIDTH,kIphone6ScaleH(height))
calendarType:kProfileInfo.calendarType
selectDate:kProfileInfo.birthday];
setDateView.selectDateDelegate = self.datePickerDelegate;
[self.view addSubview:setDateView];
}
- (void) hideDatePicker:(UITapGestureRecognizer *)sender
{
[self.view removeFromSuperview];
}
在外部调用展示代码如下:
GBDatePickerViewController *datePickerViewController = [[GBDatePickerViewController alloc] init];
[[UIApplication sharedApplication] sendAction:@selector(resignFirstResponder) to:nil from:nil forEvent:nil];
[[[UIApplication sharedApplication] keyWindow] addSubview:datePickerViewController.view];
运行界面如下:
点击黑色的背景,手势不起作用研究了半天终于找到原因了
_datePickerViewController = [[GBDatePickerViewController alloc] init];
[[UIApplication sharedApplication] sendAction:@selector(resignFirstResponder) to:nil from:nil forEvent:nil];
[[[UIApplication sharedApplication] keyWindow] addSubview:_datePickerViewController.view];
把新界面的viewcontroller设成成员变量。该tap就起作用了。手势事件的响应链传递。。。。
。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。