android - Varför utlöses inte Ionic-tangentbords-händelserna?


Jag försöker köra lite kod när tangentbordet dyker upp och när det försvinner. Jag har placerat det i huvudkomponenten MyAppComponent eftersom jag vill att koden ska köras på vilken app-sida som helst, men av någon anledning fungerar inga av tangentbords-händelserna. Vad gör jag fel?

...
import { Keyboard, Platform } from 'ionic-angular';

export class MyAppComponent {

    constructor(public platform: Platform, public keyboard: Keyboard) {
        this.platform.ready().then(() => {

            this.keyboard.didShow.subscribe(() => {
                // This is never executed...
                console.log('Keyboard is now open');
            });
        });
    }
}

Jag har försökt använda onKeyboardShow från ionic-native, men det körde inte heller sin kod.

...
import { Platform } from 'ionic-angular';
import { Keyboard } from '@ionic-native/keyboard';

export class MyAppComponent {

    constructor(public platform: Platform, public keyboard: Keyboard) {
        this.platform.ready().then(() => {

            this.keyboard.onKeyboardShow().subscribe(() => {
                // This is never executed...
                console.log('Keyboard is now open');
            });
        });
    }
}

Ionic informationsdump:

cli packages: (/usr/lib/node_modules)
    @ionic/cli-utils  : 1.19.2
    ionic (Ionic CLI) : 3.20.0

global packages:
    cordova (Cordova CLI) : 8.0.0 

local packages:
    @ionic/app-scripts : 3.1.8
    Cordova Platforms  : android 7.0.0
    Ionic Framework    : ionic-angular 3.9.2

System:
    Android SDK Tools : 26.1.1
    Node              : v9.11.1
    npm               : 5.8.0 
    OS                : Linux 4.13

cordova-plugin-ionic-keyboard-plugin (version 2.0.5) är installerad, tillagd i appModule och finns i config.xml

Jag testar appen på en Samsung Galaxy S6 med Android 7.0, den använder standardtangentbordet från Samsung.

Svar #1

Du kan använda tangentbords-händelser som nedan;

  window.addEventListener('keyboardWillShow', (e) => {}); 
  window.addEventListener('keyboardWillHide', () => {});
  window.addEventListener('keyboardDidShow', (e) => {}); 
  window.addEventListener('keyboardDidHide', () => {});

Svar #2

För Ionic 4 Keyboard Native Plugin försök använda addEventListener

window.addEventListener('keyboardWillShow', () => {
  console.log("Keyboard will Show");
});
window.addEventListener('keyboardDidShow', () => {
  console.log("Keyboard is Shown");
});
window.addEventListener('keyboardWillHide', () => {
  console.log("Keyboard will Hide");
});
window.addEventListener('keyboardDidHide', () => {
  console.log("Keyboard is Hidden");
});

Kolla hela handledningskoden här

Relaterade artiklar