Avalados por :

Cómo evitar que aparezca el teclado virtual al establecer el enfoque en un campo de entrada en una aplicación web de escaneo SAPUI5

  • Creado 01/03/2024
  • Modificado 01/03/2024
  • 13 Vistas
0
Cargando...

Tengo una aplicación web de escaneo SAPUI5 que establece el enfoque en un campo de entrada cada vez que se hace clic en cualquier parte de la pantalla o se sale del menú. Esto asegura que esté listo para mostrar el valor escaneado en el campo de entrada.

El problema es que cuando se establece el enfoque en el campo de entrada, aparece el teclado virtual. Solo quiero que el teclado virtual se muestre cuando el usuario hace clic específicamente en el campo de entrada.

Mi solución actual es deshabilitar la entrada, enfocar en ella y luego habilitar el campo de entrada:

scannedInput.setEditable(false);
scannedInput.setEditable(false);scannedInput.setEditable(false);scannedInput.focus();
setTimeout(function(){
    scannedInput.setEditable(true);},50);

El problema con esta solución es que la pantalla parpadea cuando esto sucede, ya que el teclado aparece y desaparece.

¿Alguien conoce una mejor solución?

Gracias

Pedro Pascal
Se unió el 07/03/2018
Pinterest
Telegram
Linkedin
Whatsapp

4 Respuestas

0
Cargando...

Hola Emil,

Intenté esto y no parpadeó y parece que funciona:

en Vista:

<Input xmlns="sap.m" id="input1" editable="false"/>

en controlador:

jQuery.sap.delayedCall(100, this, function () {

this.byId("input1").setEditable(true);

this.byId("input1").focus(); });

Por favor, verifica si se ajusta a tu escenario.

Rakesh

Respondido el 15/04/2024
LUCIANO RIOJA GHIOTTO
Se unió el 13/07/2019
0
Cargando...

Esta es ahora una pregunta antigua, pero estoy publicando mi solución en caso de que ayude a alguien.

Definí un control personalizado que es una extensión del estándar sap.m.Input, donde agrego una propiedad para el inputmode, que luego se agrega como un atributo durante la renderización del control:

sap.ui.define(    ['sap/m/Input'],    function (Input) {        return Input.extend("co.example.control.Input", {            metadata: {                properties: {                  'inputmode': {type: 'string', defaultValue: 'none'}                }            },            renderer: {                writeInnerAttributes: function (oRm, oInput) {                    sap.m.InputRenderer.writeInnerAttributes.apply(this, arguments);                    oRm.attr('inputmode', oInput.getInputmode())                }            }        })    })

Aquí hay un ejemplo de implementación:

<ei:ExtendedInput inputmode="none"                  change="onBarcodeScan"                  value="{/ScannedBarcode}"/>

Por supuesto, puedes usar un enlace de modelo si necesitas que el valor sea dinámico, lo cual tuve que hacer, como explico en mi respuesta un poco más detallada aquí .

Respondido el 15/04/2024
LUCIANO RIOJA GHIOTTO
Se unió el 13/07/2019
0
Cargando...

Es un teléfono móvil con un escáner integrado y sistema operativo Android.

Respondido el 15/04/2024
LUCIANO RIOJA GHIOTTO
Se unió el 13/07/2019
0
Cargando...

¡Hola!

¿Qué tipo de dispositivo estás usando?

¿Es móvil, computadora portátil o cualquier otro?

Rakesh

Respondido el 15/04/2024
LUCIANO RIOJA GHIOTTO
Se unió el 13/07/2019

contacto@primeinstitute.com

(+51) 1641 9379
(+57) 1489 6964

© 2024 Copyright. Todos los derechos reservados.

Desarrollado por Prime Institute

¡Hola! Soy Diana, asesora académica de Prime Institute, indícame en que curso estas interesado, saludos!
Hola ¿Puedo ayudarte?