我使用了一种不同的方法来隐藏UIDatePicker。
创建一个XIB(nib)文件,并将UIDatePicker添加到其中,然后调整视图大小,使其仅适合UIDatePicker,然后在您的ViewController中创建一个属性(使其强且非原子),或者您正在使用的任何类,然后当然进行合成。
@property (nonatomic, strong) UIView *myDatePickerView;
@synthesize myDatePickerView;
然后创建一个loadDatePickerView方法
- (void) loadDatePickerView
{
UINib *nib = [UINib nibWithNibName:kNIBname bundle:[NSBundle mainBundle]];
NSArray *views = [nib instantiateWithOwner:self options:nil];
self.myDatePickerView = [views firstObject];
[myDatePickerView setFrame:CGRectMake(0, 318, 320, 162)];
[self.view addSubview:myDatePickerView];
}
实现UITextFieldDelegate,并在textFieldDidBeginEditing方法中调用loadDatePickerView方法。
[self loadDatePickerView];
为了创建一个属性,它是一个UIDatePicker实例的函数
@property (nonatomic,strong)
UIDatePicker *myDatePicker;
(当然是合成的)
现在创建一个IBAction,如下所示:
-(IBAction)datePickerValueChanged:(UIDatePicker *)sender
{
myDatePicker = [[myDatePickerView subviews] lastObject];
//now you can do whatever you want with the DatePicker
}
现在将IBAction连接到XIB文件中的选择器,这样XIB现在就是您在VC中创建的UIDatePicker实例。如果您希望它消失,您可以添加一个
UITapGestureRecognizer(在ViewDidLoad中),并且选择器将是另一个IBAction,该操作会将myDatePickerView从其父视图中移除,如下所示:
- (void)viewDidLoad
{
[super viewDidLoad];
UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(dropPicker:)];
[self.view addGestureRecognizer:tap];
[self datePickerValueChanged:myDatePicker];
}
-(IBAction)dropPicker:(id)sender
{
[myDatePickerView removeFromSuperview];
}