如何在文本字段单击时弹出 datePicker 并在编辑完成后消失
Posted
技术标签:
【中文标题】如何在文本字段单击时弹出 datePicker 并在编辑完成后消失【英文标题】:how to pop up datePicker when text filed click and disappear when editing done 【发布时间】:2013-03-23 13:02:17 【问题描述】:我看到了类似下面的东西
日期选择器视图总是在那里我怎样才能让它在点击输入日期时弹出,当我点击背景时,日期选择器应该下降
我刚刚习惯了日期选择器视图,但我不知道如何做到这一点出现和消失的东西
【问题讨论】:
【参考方案1】:好的。这是您对动画的要求的一些示例代码。
- (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];
这就是你所需要的。
【讨论】:
【参考方案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
【讨论】:
【参考方案3】: 创建一个包含此日期选择器视图的UIView
引用。
现在将此datePickerContainerView
分配给textField.inputView
财产。
然后将textfield.delegate
分配给self
并实现您的
textFieldShouldReturn
方法。在那个方法中,写下这几行
[textField resignFirstResponder];
返回是;
现在,当您点击该文本字段时,它将根据 inputview 属性设置加载 datepicker 视图来代替默认键盘。
【讨论】:
【参考方案4】:在为 datePicker 编写代码之前,请确保键入以下代码行
[textField resignFirstResponder];
我们知道,键盘是文本字段的默认第一响应者。所以你应该先退出它,然后为选择器编码,否则键盘也会弹出。
【讨论】:
以上是关于如何在文本字段单击时弹出 datePicker 并在编辑完成后消失的主要内容,如果未能解决你的问题,请参考以下文章