我想记录用户输入的时间,但我不希望用户担心输入“:”或“。”等内容。输入的唯一次数将是大约7-8分钟,以及可能小数点的任意秒数,但我希望用户能够输入类似7234
的内容并将其格式化为{{1 }}
任何想法或提示都会很棒!
答案 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)。