Как я могу показать UIDatePicker вместо клавиатуры, когда пользователь выбирает UITextField?

У меня есть хороший чистый пользовательский интерфейс в представлении таблицы, в котором есть несколько текстовых полей для заполнения пользователем. Одно из полей - для дня рождения пользователя.

Я хотел бы иметь его так, чтобы, когда пользователь выбирает поле дня рождения, представление, содержащее UIDatePicker, будет выглядеть так же, как и различные клавиатуры при выборе текстового поля.

Можно ли это сделать? Я должен был помешать текстовому полю быть первым ответчиком (чтобы избежать появления клавиатуры), и мне нужно было бы оживить представление, скользящее вверх, если бы клавиатура не показывалась раньше.

Представление представления в качестве варианта возможно? Если да, то как мне это сделать? Из документации кажется, что модальные представления все еще занимают весь экран, я просто хочу использовать нижние 216 пикселей (высота клавиатуры и UIDatePicker).

Есть ли у кого-нибудь советы о том, как это сделать?

Ответ 1

Я бы выполнил это, просто анимируя представление, содержащее кнопки UIDatePicker, Done и Cancel) вверху внизу экрана. Используя CoreAnimation, это должно быть довольно легко.

Ответ 2

Старый вопрос, но правильным способом сделать это в эти дни было бы установить входной файл UITextField для создателя, который вы создали где-то. Что-то вроде этого:

UIPickerView *myPicker = [[UIPickerView alloc] init];
// set picker frame, options, etc...
// N.B. origin for the picker frame should be 0,0

[myTextField setInputView:myPicker];

Когда вы переходите к редактированию UITextField, iOS действительно отображает любой вид в textField.inputView, который по умолчанию является клавиатурой, вы можете сделать все, что хотите, до тех пор, пока это подкласс UIView.

Ответ 3

Что касается анимации, посмотрите пример приложения DateCell - http://developer.apple.com/library/ios/#samplecode/DateCell/Introduction/Intro.html

И в любом случае правильный способ сделать это - установить UITextField inputView, чтобы отображать сборщик вместо клавиатуры. Это то, что он хотел сделать. Подробнее об этом здесь: Как я могу представить представление выбора так же, как на клавиатуре?

Приветствия,

Одед.

Ответ 4

Почему вы используете текстовое поле, если вы не хотите принимать ввод с клавиатуры с клавиатуры? Вместо этого используйте подкласс UILabel (где вы переопределяете touchhesBegan/Ended: withEvent: набор методов для отображения UIDatePicker) или UIButton (где ваше действие - это метод, который сглаживает UIDatePicker).