【问题标题】:Xcode/iOS5: Show UIDatePicker when UITextField is pressed (+ hide default keyboard)Xcode/iOS5:按下 UITextField 时显示 UIDatePicker(+ 隐藏默认键盘)
【发布时间】:2011-11-12 12:22:52
【问题描述】:

我只想在 UITextField 处于活动状态时调用 UIDatePicker。选择日期后,它应该显示在同一个 UITextField 中。

我什至不知道如何调用 Picker。

谁能帮帮我?

【问题讨论】:

    标签: xcode uitextfield ios5 uidatepicker


    【解决方案1】:

    有一个委托方法叫做

    -(void)textFieldDidBeginEditing:(UITextField*)textField
    {
    [textField resignFirstResponder];
     in this you have to do this
    pick = [[UIDatePicker alloc] init];
    [pick setFrame:CGRectMake(0,200,320,120)];
    [pick addTarget:self action:@selector(done) forControlEvents:UIControlEventValueChanged]
    [self.view addSubview:pick];
    }
    

    -(void)done
    {
    [textfield setText:pick.date];
    }
    

    在 dealloc 中释放选择

    【讨论】:

    • 别忘了释放pick。
    • 谢谢杀手。但我收到错误:使用未声明的标识符“pick”。
    • UIDatePicker *pick 把这个写在 .h 文件中
    • 好的。但现在 -(void)done 出现错误:不兼容的指针类型将“NSDate *”发送到“NSString *”类型的参数。
    • 使用 NSDateFormatter 可以将 NSDate 转换为 NSString。
    【解决方案2】:

    要添加到杀手的答案,我认为您应该实施

    - (BOOL)textFieldShouldBeginEditing:(UITextField *)textField
    

    而是返回 NO。然后显示日期选择器并根据选择器选择填充 UITextField 文本。

    【讨论】:

    • 感谢 jbat :) 但我收到错误:使用未声明的标识符 'pick'。
    • 只需创建一个 ivar(实例变量),在标题中声明选择(UIDatePicker* pick;)(并创建一个保留属性)。这样您就可以保留对它的引用,以便在用户完成后将其从视图中删除。
    • 好的。但现在 -(void)done 出现错误:不兼容的指针类型将“NSDate *”发送到“NSString *”类型的参数。
    • 您需要将 NSDate (pick.date) 转换为字符串(使用 NSDateFormatter),然后将该字符串分配给 textfield.text。
    • 我之前试过:选择器现在出现在每个文本字段上,并且不再消失..
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-05-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多