Cambiar la altura de una input personalizada cuando el dispositivo gira

Hice una vista de keyboard personalizada y la uní a la propiedad inputView de un UITextField. ¿Hay alguna forma de cambiar la altura de una InputView personalizada cuando la orientación cambia y el cambio de marco se ve animado como el keyboard del sistema? Mi tamaño de keyboard es 768×272 y cuando el dispositivo se pone horizontal el tamaño se convierte en 1024×272, pero quiero hacerlo más grande como 1024×372. Si cambio el marco con el código siguiente cuando obtengo UIDeviceOrientationDidChangeNotification, la animation de cambio no es uniforme.

textField.inputView.frame = CGRectMake(0,0,1024,372); 

Por documentation de Apple para UIResponder.inputView: "Si UIKit encuentra una vista de input con un valor de UIViewAutoresizingFlexibleHeight en su máscara de autorrealización, cambia la altura para que coincida con el keyboard".

Entonces, si desea una altura personalizada, no debe especificar la máscara UIVieAutoresizingFlexibleHeight.

Después de muchos experimentos, encontré la mejor respuesta a mi propia pregunta. Una respuesta corta es cambiar el marco cuando obtiene UIKeyboardDidHideNotification .

Custom inputView está embedded en otra vista controlada por el sistema llamado UIPeripheralHostView . Cambiar el inputView personalizado en el momento equivocado no se refleja inmediatamente o muestra un layout feo en el mejor de los casos.

Cuando el dispositivo gira, el sistema oculta brevemente el keyboard y luego realiza una animation de rotation del keyboard desde la orientación anterior a la nueva orientación. Creo que el bloque de animation se inserta en algún lugar entre dos notifications UIKeyboardDidHideNotification y UIKeyboardWillShowNotification . Estas notifications se UIKeyboardWillChangeFrameNotification con UIKeyboardWillChangeFrameNotification . El "marco" en esta notificación en realidad significa el marco de UIPeripheralHostView .

Cambiar el marco de mi vista de input cuando obtengo UIKeyboardDidHideNotification da al sistema la oportunidad de ajustar el marco de UIPeripheralHostView antes de que UIPeripheralHostView la animation, lo que resulta en una transición suave desde el keyboard corto hasta el keyboard alto durante el cambio de orientación.

Esto funciona en iOS 5. Pero Apple puede cambiar la práctica en el futuro.