iPhone: ¿Puedo hacer que un UIDatePicker aparezca en la parte superior de un UIKeyboard?

Lo que trato de hacer:

Tengo una UITableView estándar, con varios UITextFields y algunas celdas que muestran una hora / date. Básicamente, es un formulario donde los usuarios pueden ingresar text y dates.

Cómo debe funcionar:

  • Al principio, no se muestra el keyboard ni el selector de date.
  • Si primero se selecciona un campo de text, el keyboard aparece. Viceversa para un selector de date (que aparece con una animation similar).
  • Si originalmente se seleccionó un campo de text, y luego el usuario selecciona una celda de time, el UIKayboard debería convertirse en un selector de date (sin animation). Del mismo modo, debería suceder cuando al revés.

Lo que no funciona:

Todo funciona muy bien, excepto el último paso que mencioné anteriormente. Básicamente, no puedo entender cómo presentar nada sobre el keyboard.

Mi método fue solo para animar el keyboard / date al mismo time, pero establezca la propiedad 'oculta' para el selector de date en consecuencia.

¿Alguna idea de cómo podría agregar algo delante del keyboard? ¿Podría crear otra window encima de todo justo después de agregar el keyboard? O bien, ¿usa la propiedad accessoryView pero transpone el marco de alguna manera?

De lo contrario, ¿hay alguna forma alternativa en la que pueda alcanzar mi objective original?

Gracias 🙂

Incluso más fácil que escuchar las notifications del keyboard es darse count de que UITextField es una subclass de UIResponder , lo que significa que tiene una propiedad inputView . Simplemente puede crear un UIDatePicker , configurarlo para que sea inputView de su campo de text, y habrá terminado. (más cualquier cosa que necesites hacer para extraer la date del selector).

La única desventaja de este enfoque es que si bien funciona muy bien para la orientación vertical en el iPhone, necesitarás hacer un poco de trabajo para que las cosas se vean bien en el paisaje y en el iPad. Sin embargo, es el mismo tipo de cosas que tendrías que hacer de todos modos.