Tengo una aplicación HTML5/Javascript (Sencha) que he empaquetado en PhoneGap para iOS en XCode. De una forma u otra, quiero poder escuchar los eventos de apertura/cierre del teclado y hacer algo en consecuencia. ¿Hay alguna manera de hacer esto?¿Cómo se escucha el teclado abrir/cerrar en Javascript/Sencha?
Respuesta
El teclado se invocará automáticamente mientras se está enfocando el campo de texto, textareafield .... Por lo tanto, puede crear un detector para el evento focus en javascript que es similar a escuchar el evento abierto de teclado. También puede usar el oyente de desenfoque para manejar el teclado cerca.
Gracias.
Estoy usando esto para setfocus. inpMessage.fieldEl.dom.focus(); funciona bien en Chrome, no en el dispositivo. –
tenga en cuenta que esto se disparará antes de que el teclado se haya abierto, por lo que puede ser demasiado pronto si necesita hacer ajustes de posicionamiento/diseño –
Necesita hacer más pruebas antes de publicar sus respuestas. Cuando toca el botón Atrás del teclado del dispositivo Android, se ocultará, pero no activará el desenfoque. – filipvkovic
Por lo que puedo ver, esto solo es posible en las versiones de Android para PhoneGap, consulte la solicitud de extracción aquí: https://github.com/phonegap/phonegap-android/issues/94.
Los eventos se llaman hidekeyboard
y showkeyboard
. Puede comprobar si también se activan en iOS.
que he encontrado el mismo problema, y creo que la mejor solución en su caso es utilizar un plugin PhoneGap que se unirá a los eventos nativos, como éste:
https://github.com/driftyco/ionic-plugins-keyboard/tree/60b803617af49a10aff831099db90340e5bb654c
Funciona muy bien en Android y el iOS de la misma manera, simplemente enlazar esos eventos:
window.addEventListener('native.showkeyboard', keyboardShowHandler);
window.addEventListener('native.hidekeyboard', keyboardHideHandler);
Esto es lo único que funcionó. Gracias. –
Activación estado abierto es fácil usando onclick o evento onfocus, pero en el cierre de teclado onBlur evento no se dispara (porque cursor permanece en la entrada/área de texto) . Así que encontré la solución detectando la altura de la ventana que se modificó significativamente en el teclado de abrir/cerrar.
Está funcionando en los navegadores modernos en Android y iOS también. Demostración: http://jsfiddle.net/qu1ssabq/3/
Si es necesario, puede mejorar mi código para dispositivos que no son compatibles con addEventListener o innerHeight: hay alternativas disponibles en Internet.
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=0, minimal-ui">
<title>Detect keyboard opened/closed event</title>
</head>
<body>
<textarea id="txta" onclick="xfocus()" onblur="xblur()"></textarea><br>
<span id="status" style="background: yellow; width: auto;">closed</span>
<script type="text/javascript">
function xfocus() {
setTimeout(function() {
height_old = window.innerHeight;
window.addEventListener('resize', xresize);
document.getElementById('status').innerHTML = 'opened'; // do something instead this
}, 500);
}
function xresize() {
height_new = window.innerHeight;
var diff = Math.abs(height_old - height_new);
var perc = Math.round((diff/height_old) * 100);
if (perc > 50)
xblur();
}
function xblur() {
window.removeEventListener('resize', xresize);
document.getElementById('status').innerHTML = 'closed'; // do something instead this
}
</script>
</body>
</html>
- 1. Escucha teclado USB con Python
- 2. ¿Cómo se escucha el revelador/encuadernador?
- 3. ¿Escucha el botón Hecho en EditText?
- 4. ¿Cómo se escucha en múltiples direcciones IP?
- 5. ¿Cómo obtener puertos en los que se escucha un proceso?
- 6. ¿Cómo se escucha presionar Ctrl-P en JavaScript?
- 7. ¿Cómo se muestra el teclado numérico en EditText en android?
- 8. Cómo agregar escucha de acción que escucha varios botones
- 9. ¿Cómo se muestra el teclado de forma predeterminada en UITextView?
- 10. ¿Cómo se reproduce el sonido del clic del teclado en un teclado personalizado?
- 11. ¿Cómo escucha Symfony al _switch_user?
- 12. cómo cambiar el puerto de escucha Postgresql en Windows?
- 13. ¿Cómo abrir el teclado automáticamente en UITextField?
- 14. Escucha de directorio en C#
- 15. Cómo deshabilitar el teclado en una UITextView?
- 16. Cómo resolver el error de escucha ¿Iniciar cuando se implementa una aplicación web en Tomcat 5.5?
- 17. iOS evento cuando el teclado se oculta
- 18. Evitar que se descarte el teclado suave
- 19. ¿Cómo se muestra el teclado virtual de un servicio?
- 20. ¿Cómo se usa Apple Script para controlar el teclado retroiluminado?
- 21. Tomcat se inicia sin errores pero no escucha en 8080
- 22. ¿Cómo se escucha que un elemento HTML se mueva en JavaScript?
- 23. Cómo detectar cuándo se muestra y oculta el teclado
- 24. ¿Cómo cambiar programáticamente el teclado en iOS?
- 25. cómo ocultar el teclado programáticamente en iphone
- 26. ¿Cómo descartar el teclado en un UIWebView?
- 27. ¿Cómo descartar el teclado en Android SearchView?
- 28. escucha() ignorando el valor de retraso acumulado
- 29. Cómo mostrar el teclado numérico
- 30. ¿Cómo puedo obtener el puerto que escucha un servicio WCF?
El teclado se invocará automáticamente mientras se está enfocando el campo de texto, textareafield .... Entonces puede crear oyente para el evento de enfoque en javascript. – heyjii
Entonces, también quiero escuchar cuándo los campos de texto, etc. pierden enfoque, ¿hay algún evento para eso? – Groppe
Creo que puedes usar el desenfoque – heyjii