我使用了另一种方法来使 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,它会从它的 superView 中删除 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];
}