首页 文章

Ionic / Cordova menubutton事件未被召集

提问于
浏览
6

我正在尝试监控Android上的菜单按钮(4.4.2 - 三星S3),但是Ionic event(也没有底层的Cordova event)没有触发:

$ionicPlatform.on("menubutton", function () {
  // do our stuff here (never gets called)
});

有没有人能够做到这一点?运行Ionic平台1.0.0,所有其他事件按预期启动 .

2 回答

  • 2

    试试这个:在.run()中

    $ionicPlatform.ready(function() {
    //...
         if (window.cordova) {
            $cordovaSplashscreen.hide();
            document.addEventListener("menubutton", myApp.onHardwareMenuKeyDown, false);
         }
    /...
    

    然后在控制器中:

    $scope.onHardwareMenuKeyDown = function() {
        alert('menu button is working');
     }
    

    另一种做事方式:

    angular.module('myApp', ['ngCordova', 'ionic', 'myApp.controllers'])
      .run(function($ionicPlatform, $rootScope, $state, $localstorage,$ionicSideMenuDelegate ) {
    
         $ionicPlatform.ready(function() {
    
          document.addEventListener("menubutton", onMenuKeyDown, false);
    
           function onMenuKeyDown() {
              console.log("some menu pops pup!! ");
              // here change the view , etc... 
              $rootScope.$apply();
            }
    
      });
    
    })
    
  • 2

    文档缺少一条线 .

    document.addEventListener("deviceready", function() {
        ...
        navigator.app.overrideButton("menubutton", true);  // <-- Add this line
        document.addEventListener("menubutton", yourCallbackFunction, false);
        ...
    }, false);
    

    https://issues.apache.org/jira/browse/CB-9949#comment-14989073

相关问题