2011-06-09 40 views
0

我想記錄用戶輸入的時間,但我不希望用戶不必擔心輸入諸如「:」或「。」之類的內容。輸入的唯一時間將是大約7-8分鐘,並且可能有小數點的秒數,但我希望用戶能夠輸入像7234之類的東西,並將其格式設置爲7:23.4以用戶名格式化輸入的時間字符串

任何想法或提示將是偉大的!

+0

給定任意秒數和可能的小數點,如果用戶打算輸入'72:34',該怎麼辦?你的格式化程序是否將它處理爲'7234:00.000','723:04.000000','72:34'或'7:23.4'? – 2011-06-09 20:42:34

回答

2

你可以用一個巧妙的運用

– textField:shouldChangeCharactersInRange:replacementString:

(請參閱UITextFieldDelegate Protocol的文檔)做到這一點。

如果您確定時間將始終爲< 10分鐘,那麼在第一次輸入數字後,請在:後面加上.。但是,在分鐘和秒鐘內使用不同的字段可能更容易。例如,如果用戶輸入713 ......你將如何解析這個問題? 7:13或7:1.3?

+0

我在想這個數字應該總是4位數,> 10分鐘就是數字中的最高位。但我想我可以看到問題,也許我應該只有3個文本字段,分鐘,秒和mili。雖然迪帕克的建議很好,但我認爲它的工作有點多,但是看不到我在兩者之間可以做些什麼。謝謝。 – 2011-06-10 17:38:54

0

如果不是絕對必要只使用一個文本字段,那麼您可以使用更多? 從左到右,第一個代表分鐘,第二個代表2個位置,代表秒,第三個(最後一個)代表小數點後的數字。然後只需在用戶輸入數字時在它們之間切換。

您可能還想看看在斯洛文尼亞的應用程序Toshl中增加費用時,如何巧妙地爲錢(與時間100可能爲1.00,或10.0或100)類似的問題完成。

2

我打算推薦一種替代方法。由於如果用戶輸入連續的文本,您無法預測:.應該移到哪裏。當用戶點擊文本字段並讓用戶選擇時間時,您應該提供一個選擇器視圖。這可以通過將UIPickerView對象設置爲UITextFieldinputView來工作。理想情況下,一個更簡單的工具應該是UIDatePicker,但它的任何模式都沒有秒。所以你將不得不用3個組件創建一個選擇器視圖 - 分,秒和毫秒。您將不得不成爲其數據源和委託,併爲這三個組件提供所有可能的值。您還需要添加一個視圖(可能爲UIToolbar),並且該按鈕的文本字段爲resignsFirstResponder

就我個人而言,我偏向於這種方法,但它只適用於iOS 3.2以上,這應該是您考慮的一部分。

相關問題