iOS - 关闭呈现为inputView的UIDatePicker

时间:2012-03-05 22:23:39

标签: ios uitextfield uidatepicker inputview

我的UI中有一个文本字段,当它被选中时会显示UIDatePicker而不是默认键盘,我怎样才能设置一个按钮,以便在用户完成时关闭选择器?

4 个答案:

答案 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];
}