Estilo de pantalla cuando el teclado virtual está activo
Idealmente, quiero que toda la interfaz tenga un estilo personalizado que se ve en el IOS (itouch / ipad) o Android equivalente con el teclado virtual presente. Vea a continuación para más detalles.
Una costumbre establecer reglas de hacking CSS para estar activo, cuando el teclado está "presente", también es una solución aceptable.
- Notificaciones Locales en Cordova 3.0.0
- Procesamiento de archivos PDF para reducir el tamaño / o la complejidad del archivo
- Selector de Google Drive (JavaScript) no móvil
- ¿Cómo XOR los valores de píxeles de dos mapas de bits juntos?
- Inicio de sesión de Android - Mejor implementación
Metas tanto androides y ios, en un sitio web (HTML / JavaScript / CSS) También tenga en cuenta que el diseño interior es: "fluido".
Edit: Esto era más diseño, entonces texto; Así que los cambios no son desorientadores. En el nivel más bajo, sólo deseo un cambio de diseño con y sin las teclas virtuales (Tal vez sólo un cambio de fondo).
La pregunta sobre la cual, esto es una buena o mala idea de diseño, es discutible. Sin embargo, creo que es irrelevante para la pregunta. Para tal exploit puede tener usos más que texto (como juegos, o medios interactivos).
De ahí la recompensa: A pesar de que ya no necesitaba la respuesta para el proyecto en el que estaba trabajando (se utilizó un diseño alternativo). Sigo creyendo que esta pregunta puede beneficiarse de ser contestada.
Comportamiento predeterminado
+--------+ | | +------------+ +-+-hidden-+-+ <- ~50% hidden | +--------+ | | +--------+ | | | | | | |visible | | | | | | \ | | | | <- ~50% visible | | 100% | | ==> | +--------+ | | | | | / | |virtual | | | | | | | | keys | | | +--------+ | | +--------+ | +------------+ +------------+
Comportamiento deseado
+------------+ +------------+ | +--------+ | | +--------+ | | | | | | |visible | | <- 100% visible (example styling) | | | | \ | | | | Custom Styling | | 100% | | ==> | +--------+ | | | | | / | |virtual | | | | | | | | keys | | | +--------+ | | +--------+ | +------------+ +------------+
- Detectar si el dispositivo Android es un teléfono o una tableta con javascript
- Android: Cómo aplicar android: inputType globalmente en todos los EditText
- ¿Por qué una aplicación de teléfono muy simple utiliza plan de datos móvil?
- ¿Cómo puedo colocar un objeto en el otro lado de la pantalla
- La aplicación de Android no aparece en la lista de aplicaciones recientes
- NullPointerException: Intenta invocar el método virtual 'int java.util.ArrayList.size ()' en una referencia de objeto nulo
- Incluye una aplicación de escáner QR con PhoneGap
- Transmisión de audio entre el dispositivo bluetooth externo y el teléfono Android
No estoy seguro, ¿es este el efecto deseado ?. Revise este enlace
Actualizar
(1). Suponiendo que es un sitio web y se está ejecutando en el navegador del dispositivo. Entonces podemos comprobar la presencia del teclado virtual comprobando el tamaño de la pantalla.
Compruebe el navegador del dispositivo: http://jsfiddle.net/UHdCw/8/show/
Código: – http://jsfiddle.net/UHdCw/8/
(2). Si está creando aplicaciones nativas con HTML5 y Phonegap, las cosas serán diferentes. Dado que no hay gancho API directo para comprobar el estado del keybord, tenemos que escribir nuestro propio complemento en Phonegap.
En Android puedes comprobar mostrar / ocultar el estado del teclado usando el código nativo [ comprobar aquí ]. Y tenemos que escribir plugin Phonegap para obtener esos eventos en nuestro HTML.
[Phonegap es un ejemplo. Creo que la mayoría de los html a los marcos nativos tienen este tipo de felicidad para gancho con código nativo]
Actualización de iOS
Como usted dijo no hay cambio en la altura / posición cuando el teclado está presente. Podemos hacer una cosa, cuando la entrada consigue el foco, podemos agregar la clase de encogimiento y reducir el tamaño de los elementos. Compruebe el siguiente enlace.
Me encontré con el mismo problema, esto funciona para mí:
<!-- Android Viewport height fix--> <script type="text/javascript"> var isAndroid = navigator.userAgent.toLowerCase().indexOf("android") > -1; //&& ua.indexOf("mobile"); if(isAndroid) { document.write('<meta name="viewport" content="width=device-width,height='+window.innerHeight+', initial-scale=1.0">'); } </script>
Haga que JavaScript aplique una clase al cuerpo cuando un elemento de entrada tiene focus
.
$("input, textarea").focus(function(){ $(document.body).addClass('when-keyboard-showing'); }); $("input, textarea").blur( function(){ $(document.body).removeClass('when-keyboard-showing'); });
A continuación, utilice las consultas @media
para determinar si la vista móvil:
@media (max-width:550px) { body.keyboard-up .header { height:0; padding:0; } }
La combinación te dejará estilizar la página cuando el teclado esté arriba, en móvil. Gracias.
- Crear un VideoTrack WebRTC con un Capturer "personalizado" en Android con libjingle
- Android: ¿Cómo funcionan los UUIDs bluetooth?