我的UI中有一个文本字段,当它被选中时会显示UIDatePicker而不是默认键盘,我怎样才能设置一个按钮,以便在用户完成时关闭选择器?
答案 0 :(得分:8)
我所做的是将我的inputView作为自定义视图,其中包含一个UIDatePicker
和一个工具栏,上面有一个“完成”按钮连接到一个方法,该方法调用委托方法来告诉拥有该对象的对象UITextField
通过调用resignFirstResponder
来解除“键盘”。
答案 1 :(得分:1)
创建一个UIView(即customDatePickerView)并在该视图中,在xib中创建datepicker和一个完成按钮以及一个取消按钮。 在textfield委托中:
- (void)textFieldDidBeginEditing:(UITextField *)textField
{
if (textField == textfieldName) {
[textfieldName resignFirstResponder];
//show the view
self.customDatePickerView.hidden = NO;
}
}//dismisses keyboard
更改日期选择器值的功能
- (IBAction)onDatePickerClick:(id)sender {
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc]init];
[dateFormatter setDateFormat:@"MM/dd/YYYY"];
NSDate *selectedDate = [self.wellRecordDatePicker date];
NSString *recordDate = [dateFormatter stringFromDate:selectedDate];
self.yourTextfieldName.text = recordDate;
}
- (IBAction)onDoneBtnClick:(id)sender
{
self.customDatePickerView.hidden = YES;
}
- (IBAction)onCancelBtnClick:(id)sender
{
self.customDatePickerView.hidden = YES;
}
希望这会对你有所帮助。
答案 2 :(得分:0)
我做了类似的事情,我用按钮和UIDatePicker
创建了一个视图,然后单独显示该视图而不是UIDatePicker
。然后按钮就连接到IBAction
,将视图移出。
这样,按钮随UIDatePicker
视图移动,看起来与用户“连接”。您甚至可以在笔尖中定义此UIView
并在运行时使用addSubview:
。
答案 3 :(得分:0)
您可以通过添加此
来解决此问题[self.view endEditing:YES];
将此添加到您要解除日期选择器的位置,就像我已将其添加到轻拍手势上一样 在viewDidLoad上添加了Tapgesture
UITapGestureRecognizer *gesRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleTap:)]; // Declare the Gesture.
gesRecognizer.delegate = self;
[self.view addGestureRecognizer:gesRecognizer];
在viewdidLoad上添加此内容后添加此方法以检测手势识别器
- (void)handleTap:(UITapGestureRecognizer *)gestureRecognizer{
NSLog(@"Tapped");
[self.view endEditing:YES];
}