代码之家  ›  专栏  ›  技术社区  ›  Ben S

当用户选择uitextfield时,如何显示uidatepicker而不是键盘?

  •  10
  • Ben S  · 技术社区  · 15 年前

    我在一个表视图中有一个干净的用户界面,其中有几个文本字段供用户填写。其中一个字段是用户生日字段。

    我希望这样,当用户选择生日字段时,包含uidatepicker的视图会出现,就像选择文本字段时不同的键盘一样。

    能做到吗?我必须防止文本字段成为第一响应者(以避免键盘出现),如果以前没有显示过键盘,我必须使视图向上滑动。

    以形式呈现视图是一种选择吗?如果是的话,我该怎么做呢?从文档来看,模态视图仍然占据整个屏幕,我只想使用较低的216像素(键盘和uidatepicker的高度)。

    有人对如何做这件事有什么建议吗?

    4 回复  |  直到 11 年前
        1
  •  5
  •   Ben Gottlieb    15 年前

    我将通过从屏幕底部向上设置一个包含uidatepicker、done和cancel按钮的视图来实现这一点。使用CoreAnimation,这应该很容易。

        2
  •  32
  •   zero7 laher    11 年前

    旧问题,但现在正确的方法是将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 .

        3
  •  7
  •   Community CDub    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?

    干杯,

    奥德

        4
  •  1
  •   Martin Gordon    15 年前

    如果不想接受键盘上的用户输入,为什么要使用文本字段?而是使用uiLabel子类(重写touchBegan/ended:withEvent:set of methods以显示uidatepicker)或uiButton(其中操作是向上滑动uidatepicker的方法)。