代表用户格式化输入的时间字符串

时间:2011-06-09 20:26:51

标签: objective-c ios cocoa-touch formatting datetime-format

我想记录用户输入的时间,但我不希望用户担心输入“:”或“。”等内容。输入的唯一次数将是大约7-8分钟,以及可能小数点的任意秒数,但我希望用户能够输入类似7234的内容并将其格式化为{{1 }}

任何想法或提示都会很棒!

3 个答案:

答案 0 :(得分:2)

你可以巧妙地使用

来做到这一点

– textField:shouldChangeCharactersInRange:replacementString:

(请参阅UITextFieldDelegate Protocol的文档)。

如果您确定时间总是<10分钟,那么在第一个数字输入之后,添加:,然后在接下来的两个之后添加.。但是,使用不同的字段可能更容易分钟和秒。例如,如果用户输入713怎么办...你会如何解析这个? 7:13或7:1.3?

答案 1 :(得分:2)

我将推荐一种替代方法。因为如果用户输入连续的文本,您无法预测:.应该去哪里。当用户点击文本字段并让用户选择时间时,您应该提供一个选择器视图。这可以通过将UIPickerView对象设置为inputView的{​​{1}}来实现。理想情况下,一个更简单的工具是UITextField,但它的任何模式都没有秒。因此,您必须创建一个包含3个组件的选择器视图 - 分钟,秒和毫秒。您必须成为其数据源和委托,并为这三个组件提供所有可能的值。您还需要添加一个视图(可能是UIDatePicker),其中包含UIToolbar文本字段的按钮。

就我个人而言,我偏向于这种方法,但它仅在iOS 3.2中可用,这应该是您考虑的一部分。

答案 2 :(得分:0)

如果不是绝对必须只使用一个文本字段,您可以使用更多? 从左到右,第一个表示分钟,第二个表示2个位置,表示秒,第三个(和最后一个)表示小数点以外的数字。然后只需在用户输入数字时在它们之间切换。

您可能还想查看在添加费用时,在一个名为Toshl的斯洛文尼亚应用程序中,如何巧妙地完成这项工作(有类似问题,时间100可能是1.00,或10.0或100)。