为什么离子键盘事件没有触发?

Ion*_*aru 1 android typescript ionic-framework ionic3 angular

我正试图在键盘弹出和隐藏时执行一些代码.我已将它放在主MyAppComponent中,因为我希望代码在任何应用程序页面上执行,但由于某些原因,没有任何键盘事件正在运行.我究竟做错了什么?

...
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');
            });
        });
    }
}
Run Code Online (Sandbox Code Playgroud)

我尝试过使用onKeyboardShow离子本机,但是也没有执行它的代码.

...
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');
            });
        });
    }
}
Run Code Online (Sandbox Code Playgroud)

离子信息转储:

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
Run Code Online (Sandbox Code Playgroud)

安装了cordova-plugin-ionic-keyboard插件(版本2.0.5),添加到appModule并出现在config.xml中

我正在使用Android 7.0测试三星Galaxy S6上的应用程序,它使用默认的三星键盘.

Ber*_*man 6

你可以使用下面的键盘事件;

  window.addEventListener('keyboardWillShow', (e) => {}); 
  window.addEventListener('keyboardWillHide', () => {});
  window.addEventListener('keyboardDidShow', (e) => {}); 
  window.addEventListener('keyboardDidHide', () => {});
Run Code Online (Sandbox Code Playgroud)