Форматирование введенной строки времени от имени пользователя - PullRequest
0 голосов
/ 10 июня 2011

Я хочу записать время, введенное пользователем, но я не хочу, чтобы пользователю приходилось беспокоиться о вводе таких вещей, как «:» или «.». Единственное введенное время будет около 7-8 минут и любое количество секунд с возможной десятичной точкой, но я бы хотел, чтобы пользователь мог просто ввести что-то вроде 7234 и отформатировать его в 7:23.4.

Любые идеи или подсказки были бы великолепны!

Ответы [ 3 ]

2 голосов
/ 10 июня 2011

Я собираюсь рекомендовать альтернативный подход. Поскольку вы не можете предсказать, куда должны пойти : и ., если пользователь вводит непрерывный фрагмент текста. Вы должны скорее представить представление выбора, когда пользователь нажимает на текстовое поле и позволяет пользователю выбрать время. Это работает, устанавливая объект UIPickerView как inputView из UITextField. В идеале более простым инструментом было бы UIDatePicker, но у него нет секунд ни в одном из режимов. Таким образом, вам нужно будет создать представление выбора из 3 компонентов - минут, секунд и миллисекунд. Вы должны будете стать его источником данных и делегатом и предоставить все возможные значения для трех компонентов. Вам также необходимо добавить представление (возможно, UIToolbar) с кнопкой, resignsFirstResponder для текстового поля.

Лично я склонен к этому подходу, но он доступен только с iOS 3.2, что должно быть частью вашего рассмотрения.

2 голосов
/ 10 июня 2011

Вы можете сделать это с умным использованием

– textField:shouldChangeCharactersInRange:replacementString:

(см. Документацию для протокола UITextFieldDelegate ).

Если вы точно знаете, что время всегда будет <10 минут, то после первой числовой записи добавьте <code>:, а после следующих двух добавьте .. Однако может быть проще использовать разные поля для минут и секунд. Например, что если пользователь введет 713 ... как бы вы это проанализировали? 7:13 или 7: 1,3?

0 голосов
/ 10 июня 2011

Если нет необходимости использовать только одно текстовое поле, вы могли бы использовать больше? Слева направо первый представляет минуты, второй имеет 2 места и секунды, а третий (и последний) представляет числа после запятой. Затем просто переключайтесь между ними, когда пользователь вводит цифры.

Вы также можете проверить, как это разумно делается за деньги (с аналогичными проблемами, когда время 100 может быть 1,00 или 10,0 или 100) в словенском приложении под названием Toshl - при добавлении расходов.

...