2016-05-12 5 views
1

私はイオンフレームワークを使用し、アンドロイド4.4でアプリを構築しました。 入力フィールドをいくつかのビューに置いてフォーカスを合わせると、キーボードが表示されますが、ハードウェアの戻るボタンを押すと、キーボードを非表示にしたいが、現在のビューを閉じて履歴ビューに戻るどうすればキーボードを隠すことができ、現在のビューページを閉じることはできませんか?フォーカスが入力フィールドにない場合は、戻るボタンを押して現在のビューを閉じるようにします。アンドロイド4.4イオンハードウェアボタンバッククローズキーボード

$ionicPlatform.ready(function() { 
     if (window.cordova && window.cordova.plugins.Keyboard) { 
      cordova.plugins.Keyboard.hideKeyboardAccessoryBar(true); 
     } 
     if (window.StatusBar) { 
      // org.apache.cordova.statusbar required 
      // StatusBar.styleDefault(); 
      StatusBar.styleBlackOpaque(); 
     } 
    }); 
$ionicPlatform.registerBackButtonAction(function (e) { 
     e.preventDefault(); 
     console.log("aaaaaa:"+$cordovaKeyboard.isVisible()); 
     function showConfirm() { 
      var confirmPopup = $ionicPopup.confirm({ 
       title: '<strong>exit?</strong>', 
       template: 'exit?', 
       okText: 'exit', 
       cancelText: 'cancel' 
      }); 
      confirmPopup.then(function (res) { 
       if (res) { 
        ionic.Platform.exitApp(); 
       } else { 

       } 
      }); 
     } 

     if ($location.path() == '/app/home') { 
      showConfirm(); 
     } else 
     if ($ionicHistory.backView()) { 

      if($cordovaKeyboard.isVisible()) { 
        $cordovaKeyboard.close(); 
      } else { 
       $ionicHistory.goBack(); 
      } 
     } else { 
      showConfirm(); 
     } 
     return false; 
    }, 101); 

$ cordovaKeyboard.isVisible()なかれ)($ ionicPlatform.registerBackButtonActionでfalseを返しています。

答えて

1

[OK]を、私はその質問についての解決策を見つける。

window.addEventListener('native.keyboardhide', keyboardHideHandler); 
     function keyboardHideHandler(e){ 
      var test=$ionicPlatform.registerBackButtonAction(function (e) { 
      },1000); 
      $timeout(function() { 
       test(); 
      }, 100); 
     } 

この方法はベストプラクティスではありませんが、動作することがわかります。誰かがより良い方法やこのメソッドの生産を見つける場合、いくつかのバグ、私に知らせてください。

関連する問題