En varios casos, quiero agregar una barra de herramientas en la parte superior del teclado del iPhone (como en Safari de iPhone cuando navega por elementos de formulario, por ejemplo).
Actualmente estoy especificando el rectángulo de la barra de herramientas con constantes, pero debido a que otros elementos de la interfaz están cambiando (barras de herramientas y barras de navegación en la parte superior de la pantalla), cada vez que hacemos un cambio menor en la interfaz, la barra de herramientas se desalinea.
¿Hay alguna forma de determinar mediante programación la posición del teclado en relación con la vista actual?
fuente
Así que básicamente:
En el método init:
Y luego tenga los métodos mencionados anteriormente para ajustar la posición de la barra:
Podría hacerlo bonito animando el cambio de posición envolviéndolo en
fuente
UIKeyboardFrameBeginUserInfoKey
que dan la misma información.UIKeyboardFrameEndUserInfoKey
para obtener el fotograma final (en coordiantes de pantalla) del teclado. También puede usarUIKeyboardAnimationDurationUserInfoKey
yUIKeyboardAnimationCurveUserInfoKey
para obtener el resto de los parámetros que necesita para que coincidan exactamente con el comportamiento del teclado.Esto se basa en la respuesta existente de tonklon : solo estoy agregando un fragmento de código que muestra una barra de herramientas negra semitransparente en la parte superior del teclado, junto con un botón "listo" a la derecha:
y se
-resignKeyboard
ve como:Espero que ayude a alguien.
fuente
Si se registra para
UIKeyboardWillShowNotification
UIKeyboardWillHideNotification
recibir notificaciones del teclado, es decir , etc., la notificación que reciba contendrá los límites del teclado en eluserInfo
dict (UIKeyboardBoundsUserInfoKey
).Consulte la
UIWindow
referencia de la clase.fuente
En 3.0 y superior, puede obtener la duración y la curva de la animación del
userInfo
diccionario de notificaciones.por ejemplo, para animar el tamaño de la vista para hacer espacio para el teclado, regístrese para
UIKeyboardWillShowNotification
y haga algo como lo siguiente:Haz una animación similar para
UIKeyboardWillHideNotification
.fuente
Cree este método y llámelo en ViewWillLoad:
fuente
No hay forma (AFAIK) de obtener las dimensiones de la vista del teclado. Sin embargo, es constante, al menos en todas las versiones de iPhone hasta ahora.
Si calcula la posición de la barra de herramientas como un desplazamiento desde la PARTE INFERIOR de su vista y tiene en cuenta el tamaño de su vista, entonces no debería tener que preocuparse si una barra de navegación está presente o no.
P.ej
En lugar de definir, puede crear fácilmente una
keyboardHeight
función que devuelva el tamaño en función de si se muestra el teclado y mover esta posición de la barra de herramientas a una función separada que reorganice su diseño.También puede depender de dónde haga este posicionamiento, ya que es posible que el tamaño de su vista cambie entre cargarse y mostrarse según la configuración de la barra de navegación. Creo que el mejor lugar para hacerlo sería en viewWillAppear.
fuente