7

我有类似下面的视图

在此处输入图像描述 日期选择器视图总是在那里我怎样才能让它在点击输入日期时弹出,当我点击背景时,日期选择器应该下降

我刚刚习惯了日期选择器视图,但我不知道如何做到这一点出现和消失

4

4 回答 4

13

行。这是您对动画的要求的一些示例代码。

- (void) showView
{
    [self.view addSubview:yourDatePickerView];
        yourDatePickerView.frame = CGRectMake(0, -250, 320, 50);
        [UIView animateWithDuration:1.0
                         animations:^{
                             yourDatePickerView.frame = CGRectMake(0, 152, 320, 260);
                         }];
}

这里是如何隐藏你的 DatePickerView

- (void) hideView
{
    [UIView animateWithDuration:0.5
                         animations:^{
                             yourDatePickerView.frame = CGRectMake(0, -250, 320, 50);
                         } completion:^(BOOL finished) {
                             [yourDatePickerView removeFromSuperview];
                         }];
}

- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField
{
    if(textField == yourDateTextField)
    {
         [self showView];
         return NO; // preventing keyboard from showing
    }
    return YES;
}


- (void)textFieldDidEndEditing:(UITextField *)textField
{
    if(textField == yourDateTextField)
    {
         [self hideView];
    }
}

这就是你所需要的。

于 2013-03-23T13:29:30.177 回答
2

您应该在委托方法中识别文本字段。

- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField
{
    if(textField == DATE_TEXT_FIELD)
    {
             //Display date picker
    }
}


- (void)textFieldDidEndEditing:(UITextField *)textField
{

        if(textField == DATE_TEXT_FIELD)
        {
                 //Hide date picker
            }
}
于 2013-03-23T13:27:50.367 回答
1
  • 创建一个UIView包含此日期选择器视图的参考。
  • 现在将其分配datePickerContainerViewtextField.inputView 属性。
  • 然后分配textfield.delegateself实现您的 textFieldShouldReturn方法。在那个方法中,写下这几行

    [textField resignFirstResponder];

    返回是;

现在,当您点击该文本字段时,它将根据 inputview 属性设置加载 datepicker 视图来代替默认键盘。

于 2013-03-23T13:28:28.690 回答
0

在为 datePicker 编写代码之前,请确保键入以下代码行

    [textField resignFirstResponder];

众所周知,键盘是文本字段的默认第一响应者。因此,您应该先将其退出,然后再为选择器编码,否则键盘也会弹出。

于 2015-09-22T08:38:02.440 回答