-1

У меня есть приложение для Android, разработанное с помощью кордовы, и я не был слишком знаком с ним как родной java. В моем приложении случае, когда он открыл ее показывал экран входа в систему с именем пользователя, пароль и кнопку Вход и я нашел файл, который обрабатывает эту функциональность была signin.js и код был нижеКак спрятать SoftKeyboard в apache cordova android

Ext.define('GBMob.view.Signin',{ 
    extend: 'Ext.form.Panel', 

    requires: [ 
     'Ext.data.JsonP', 
     'Ext.field.Password', 
     'Ext.form.FieldSet', 
     'GBMob.view.GBHome' 
    ], 

    config: { 

    items: [ 
    { 
     xtype: 'fieldset', 
     title: 'User Info', 
     instructions: 'Enter Username/Email and Password.', 
     maxWidth: 550, 

     items: [ 
     { 
      xtype: 'textfield', 
      name: 'username', 
      label: 'Username' 
     }, 
     { 
      xtype: 'passwordfield', 
      name: 'password', 
      label: 'Password' 
     }, 
     { 
      xtype: 'button', 
      text: 'Sign in', 
      ui: 'confirm', 
      padding: 2, 
      margin: 15, 
      flex: 0.3, 

      handler: function() { 

       var loadingMask = { 
        xtype: 'loadmask', 
        message: 'Signing in ...' 
       }; 

       Ext.Viewport.setMasked(loadingMask); 

       var softkeyboard = window.cordova.plugins.SoftKeyBoard; 
       softkeyboard.hide(); 

       username = SigninView.getValues().username; 
       password = SigninView.getValues().password; 

       Ext.data.JsonP.request({ 

        url: 'https://xxxxxx.com/api/login/', 
        scope: this, 

        params: { 
         data: base64.encode(username.toLowerCase() + ':' + password) 
        }, 

        success: function(result) { 

         ........ 
         ........ 
         ........ 
       console.log("Signing in with Username: " + username + " and password: " + password); 
      } 
     } 
     ] 
    }] 
    } 
}); 

Так как сейчас код был но проблема была после того, как пользователь ввел username and password и нажал на кнопку Sign inkeyboard was not disappearing и из-за которой после перенаправления на панель инструментов половина страницы панели инструментов исчезала (исчезает), я имею в виду только половину страницы, которая была видна и половина страницы была пустой (может быть, предыдущая часть экрана экрана входа в систему делала половину экрана панели мониторинга невидимым/пустым белым фоном). Так что я решил, чтобы скрыть клавиатуру сразу после нажатия на кнопку Sign in и, следовательно, сделать следующий

  1. обыскали плагин клавиатуры, как cordova plugin search keyboard
  2. плагин установлен SoftKeyboard, как cordova plugin add org.apache.cordova.plugin.softkeyboard
  3. Добавлено следующие две строки в зарегистрировались .js файл, как указано в приведенном выше коде

var softkeyboard = window.cordova.plugins.SoftKeyBoard;

softkeyboard.hide();

, но после добавления вышеуказанных двух строк я вообще не смог войти в систему, и приложение отображало только подпись ... маску постоянно.

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

Кто-нибудь имел представление о том, как скрыть клавиатуру в кордове?

ответ

0

Найдена эта функция где-то на StackOverflow, чтобы скрыть клавиатуру в андроид

Нам нужно создать яваскрипт функцию, как показано ниже

function hideKeyboard() { 
    //this set timeout needed for case when hideKeyborad 
    //is called inside of 'onfocus' event handler 
    setTimeout(function() { 

    //creating temp field 
    var field = document.createElement('input'); 
    field.setAttribute('type', 'text'); 
    //hiding temp field from peoples eyes 
    //-webkit-user-modify is nessesary for Android 4.x 
    field.setAttribute('style', 'position:absolute; top: 0px; opacity: 0; -webkit-user-modify: read-write-plaintext-only; left:0px;'); 
    document.body.appendChild(field); 

    //adding onfocus event handler for out temp field 
    field.onfocus = function(){ 
     //this timeout of 200ms is nessasary for Android 2.3.x 
     setTimeout(function() { 

     field.setAttribute('style', 'display:none;'); 
     setTimeout(function() { 
      document.body.removeChild(field); 
      document.body.focus(); 
     }, 14); 

     }, 200); 
    }; 
    //focusing it 
    field.focus(); 

    }, 50); 
} 

И просто вызовите это где-нибудь в вашем файл JS, когда это необходимо, как

hideKeyboard();