我在一个表视图中有一个很好的干净UI,它有一些文本字段供用户填写。其中一个字段是用户的生日。
我希望这样,当用户选择生日字段时,包含UIDatePicker的视图就会出现,就像选择文本字段时不同的键盘一样。
可以这样做吗?我必须阻止文本字段成为第一个响应者(以避免键盘出现),如果之前没有显示键盘,我将不得不动画视图向上滑动。
以模态方式呈现视图是一种选择吗?如果是这样我怎么去做呢?从文档中可以看出,模态视图仍占据整个屏幕,我只想使用较低的216像素(键盘高度和UIDatePicker)。
任何人都有关于如何做到这一点的任何提示?
答案 0 :(得分:33)
旧问题,但这些天正确的方法是将UITextField的inputView设置为您在某处创建的选择器。像这样:
UIPickerView *myPicker = [[UIPickerView alloc] init];
// set picker frame, options, etc...
// N.B. origin for the picker's frame should be 0,0
[myTextField setInputView:myPicker];
当您去编辑UITextField时,iOS实际上只显示textField.inputView
处的任何视图,默认情况下是键盘,只要它是UIView
的子类,您就可以创建任何想要的视图。
答案 1 :(得分:7)
关于动画,请看一下DateCell示例应用程序 - http://developer.apple.com/library/ios/#samplecode/DateCell/Introduction/Intro.html
在任何情况下,正确的方法是设置UITextField的inputView来显示选择器而不是键盘。这就是它的意图。更多内容如下: How can I present a picker view just like the keyboard does?
干杯,
乌迪德。
答案 2 :(得分:5)
我将通过从屏幕底部向上设置包含UIDatePicker,Done和Cancel按钮的视图来实现此功能。使用CoreAnimation,这应该很容易。
答案 3 :(得分:1)
如果您不想接受键盘的用户输入,为什么使用文本字段?而是使用UILabel子类(您覆盖touchesBegan / Ended:withEvent:显示UIDatePicker的方法集)或UIButton(其中您的操作是滑动UIDatePicker的方法)。