Вопрос по keyboard, iphone, uidatepicker, cocoa-touch – Как я могу показать UIDatePicker вместо клавиатуры, когда пользователь выбирает UITextField?

10

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

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

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

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

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

Ваш Ответ

4   ответа
32

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

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

[myTextField setInputView:myPicker];

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

Этот ответ должен быть принят вместо "UIView анимация " решение. Спасибо klefevre
5

Я бы реализовал это, просто анимировав представление, содержащее UIDatePicker, кнопку «Готово» и «Отмена» вверх снизу экрана. Используя CoreAnimation, это должно быть довольно просто.

Как бы я поступил так? У меня есть контроллер вида / вид, разработанный в IB, но я нене знаю, что делать дальше. Добавлять ли представление как подпредставление к отображаемому в данный момент представлению, а затем как-то его анимировать? Я'Я не уверен, как UIViews относятся к CALayers для анимации. Ben S
Не берите в голову. Я был в состоянии понять это. Я добавляю представление, которое содержит палитру дат, в окно и анимирую его, используя[UIView beginAnimations] блок Ben S
Ребята, смотрите Одед Бекс ДовьРешение чуть ниже. До тех пор, как вы'Если вы программируете для iOS 3.2 или выше, вы можете анимировать фреймворк и управлять им вместе с клавиатурой. Определенно правильный способ сделать это. Craig B
7

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

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

Ура,

Одед.

1

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

Похожие вопросы