es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Cómo escuchar las pulsaciones de los botones en Android/IOS para Nativescript/Angular.

Estoy intentando navegar entre botones con las teclas (DPAD), así que necesito escuchar los eventos de teclado.

Lo resolví para Android, pero no sé cómo hacerlo en iOS.

public onButtonLoaded_1(args) {
    let btn = args.object as Button;
    let androidButton = btn.android as android.widget.Button

    androidButton.setOnKeyListener(new android.view.View.OnKeyListener({
        onKey: function (view, keyCode, keyEvent) {
            if (
                keyCode == android.view.KeyEvent.KEYCODE_DPAD_CENTER &&
                keyEvent.getAction() == android.view.KeyEvent.ACTION_DOWN
            ) {
                console.log("DPAD Center Pressed");
            }
            return false;
        }
    }));
}

No funciona para subir y bajar el volumen en el emulador, no lo he probado en un dispositivo.

Para iOS, no tengo idea de cómo hacerlo. Encontré esto, tal vez alguien sepa cómo hacerlo en iOS:

https://developer.apple.com/library/archive/documentation/General/Conceptual/AppleTV_PG/DetectingButtonPressesandGestures.html

https://www.hackingwithswift.com/example-code/uikit/how-to-detect-keyboard-input-using-pressesbegan-and-pressesended

https://stackoverflow.com/questions/32502963/how-to-add-detect-button-presses-in-tvos

https://stackoverflow.com/questions/40634638/how-to-handle-menu-button-action-in-tvos-remote

https://stackoverflow.com/questions/59200396/how-to-detect-a-click-gesture-in-swiftui-tvos

Códigos de teclado Swift:

https://gist.github.com/swillits/df648e87016772c7f7e5dbed2b345066

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Dado que Nativescript es compatible tanto con Android como con iOS, también puedes escuchar los KeyEvents en iOS. Aquí tienes algunos recursos que podrían ayudarte a lograr esto:

    Aquí tienes un ejemplo de cómo puedes obtener los códigos de tecla en Swift:

    enum KeyCode: UInt16 {
      case volumeUp = 0x72
      case volumeDown = 0x73
    }
    
    func keyDown(with event: NSEvent) {
      guard let keyCode = KeyCode(rawValue: event.keyCode) else { return }
    
      switch keyCode {
        case .volumeUp:
          print("Se presionó el botón de subir volumen")
        case .volumeDown:
          print("Se presionó el botón de bajar volumen")
        default:
          break
      }
    }
    

    Ten en cuenta que esto es solo un punto de partida y deberás adaptar este código para que funcione con Nativescript y tu caso de uso específico. ¡Buena suerte!

Comments are closed.