2014-09-16 5 views
3

Я немного борюсь с этой реализацией. Я строю свой первый Hello World! приложение android (cordova), которое требует, чтобы клавиатура всегда показывалась и не скрывала ее, как когда пользователь нажимает кнопку «Назад» или любой другой вход.
Почему? в основном у меня нет элемента ввода в моем HTML, чтобы вызвать фокус. & показать клавиатуру, это своего рода эмулятор терминалов, где пользователь выполняет определенные команды.
Клавиатура не показывал на всех, так что я пошел, и я добавил следующее:Предотвращение закрытия клавиатуры

Установленная Ионные клавиатура плагин

cordova plugin add https://github.com/driftyco/ionic-plugins-keyboard.git 

Добавлен Разрешение config.xml

<feature name="Keyboard"> 
    <param name="android-package" value="com.ionic.keyboard.IonicKeyboard" /> 
    <param name="onload" value="true" /> 
</feature> 

В моем модуле приложения следующие строки:

var myApp = angular.module('myApp', ['ionic']); 

myApp.run(function($ionicPlatform) { 
    $ionicPlatform.ready(function() { 

     if(window.cordova && window.cordova.plugins.Keyboard) { 
      window.cordova.plugins.Keyboard.show(); // Show Keyboard on startup 

// and here Trigger a show keyboard when hidden 
      window.addEventListener('native.hidekeyboard', keyboardHideHandler); 

      function keyboardHideHandler(e){ 
       window.cordova.plugins.Keyboard.show(); 
      } 

     } 
    }); 
}); 

Теперь, описанная выше реализация работает, но я не думаю, что она элегантна, чтобы обрабатывать ее таким образом, и мне не нравится ощущение, что клавиатура закрывается, а затем всплывает снова.

  • Есть ли альтернативный способ, помимо плагина Ionic keyboard, настроить мое приложение Android для отображения клавиатуры все время?
  • Правильно ли это делается с кордовыми/ионными каркасами?

Надеюсь, что я на правильном пути. Любые советы будут оценены.

Благодарим вас

Скриншоты

enter image description here

+0

Почему «ios-package» в Android-устройстве. см. config.xml –

+0

Спасибо, что указали, что из Мохаммада исправлено. Однако вызов Keyboard.show(); была работа в любом случае – Awena

ответ

4

EDIT: Я думаю, что стандартный способ сделать это здесь: https://stackoverflow.com/a/1510005/1091751. Это не помешает ему закрытия, когда BackButton нажата, однако, вы могли бы попробовать отредактировать существующие файлы Кордова Android в platforms/android переопределить следующий метод (взятый из https://stackoverflow.com/a/6571093/1091751):


I убежище 't проверял это, но что, если вы добавляете скрытый ввод, который вы фокусируете первоначально, когда ваше приложение загружается, а затем постоянно переориентирует его, когда оно теряет фокус? Я не уверен, что это будет выглядеть иначе, чем явное вызов keyboard.show(), но это может помешать дрожанию открытия/закрытия клавиатуры.

Что-то вроде:

<input constant-focus id="hiddenFocus" type="hidden"> 

, а затем

document.getElementById('hiddenFocus').focus() 

затем постоянно переориентировать его держать клавиатуру вверх: // HTML тег = constant-focus

.directive('constantFocus', function(){ 
     return { 
     restrict: 'A', 
     link: function(scope, element, attrs){ 

      element[0].addEventListener('focusout', function(e){ 
      element[0].focus(); 
      }); 
     } 
     }; 
    }) 
+0

Привет, Тим, похоже, мы отправили в то же время :) Конечно, я попробую прямо сейчас. Что вы думаете о нижеследующем? – Awena

+0

Метод ввода не работает для моего случая, это может быть связано с подключаемым модулем jquery terminal. Ваш ответ кажется вполне логичным для меня, тем же самым предложением, которое я нашел во многих сообщениях здесь. Думаю, мой последний курорт станет превосходной кордорой .. Спасибо Тиму! – Awena

+1

Удачи! Клавиатура может быть непостоянной, пожалуйста, отправьте сообщение, если у вас есть какие-то успехи :) – user1234

0

Ну, я думаю, что я пришел по-другому, все еще не уверен, что так оно и должно быть b e обработано.

Добавить прослушиватель событий на разветвителях

myApp.directive('detectGestures', function ($ionicGesture) { 
    return { 
    restrict: 'A', 
    link: function (scope, elem, attrs) { 
     var gestureType = attrs.gestureType; 
     switch (gestureType) { 
      case 'doubletap': 
       $ionicGesture.on('doubletap', scope.reportEvent, elem); 
       break; 
    }}} 
}); 

Затем в моем контроллере, если клавиатура Видимая близко еще Показать

$scope.reportEvent = function (event) { 
     if (event.type == 'doubletap') { 
      $timeout(function() { 
       if (window.cordova && window.cordova.plugins.Keyboard) { 
        if(cordova.plugins.Keyboard.isVisible){ 
         window.cordova.plugins.Keyboard.close(); 
        } else { 
         window.cordova.plugins.Keyboard.show(); 
        } 

       } 
      }, 500); 
     } 
     }; 

Позволь мне знать, что вы думаете.
Спасибо!

+0

Хм, я думаю, я думал, что основная проблема заключалась в том, что клавиатура начала закрываться, а затем снова открывалась, и в этом случае я не уверен, что это исправляет то, что ? – user1234