2017-04-14 4 views
1

私は角の流星でアプリを開発しています。画面の下部にある入力にフォーカスするたびに、キーボードが重なってしまいます。モバイルでキーボード入力が重複しています

私は私の携帯-config.jsのにこれを追加することなく、動作しません試してみました:

App.setPreference('fullscreen', false); 
App.setPreference('android-windowSoftInputMode', 'adjustResize'); 

そしてまた私のindex.htmlでこのメタ:

<meta name="viewport" content="user-scalable=no, initial-scale=1, maximum-scale=1, minimum-scale=1, target-densitydpi=device-dpi, width=device-width" /> 

私は何かを忘れているだろうか?

+0

あなたは、このためのソリューションを達しています?私は同じ設定をして、それが動作するように死にます! – Roshdy

+0

まだ見つかりませんでした、sz –

+0

私は興味があれば、ここにそれを投稿することを知らせる – Roshdy

答えて

0

あなたはAndroid用の2つのオプションがあります(iOSがそれをよりうまく処理します)。 AndroidManifest.xmlファイルには、最初の<activity>タグの内部にandroid:windowSoftInputModeが表示されます。これにより、キーボードと画面のやりとりの仕方が調整されます。 Hereはどのように動作するかについての詳細です。

+0

adjustPanではなくadjustPanでなければならないことを理解しています。私はどちらにしてもやってみましたが、どちらもうまくいきません。 メテオで私はアプリのルートmobile-config.jsを手に入れました。これは私が変えなければならないものです。 .meteor/local/cordova-buildでは、config.xmlが見つかりました(最初のパラメータで生成されました)。この最後のものは、platform/android/AndroidManifest.xmlのものが生成されていますが、この最後のものは見つからないのです。 –

+0

また、このプロパティをAndroidManifestに直接追加しようとしました。 xml(私はこれを編集してはならないことを知っている、それはちょうど試しだった)しかし、アプリケーションはコンパイルされません –

+0

@DanielRodriguez私はMeteorにあまり慣れていません - はい、あなたはこのプロパティをAndroidManifest.xml私はMeteorがどう扱っているのか分かりません。 –

1

これは、ほぼすべての状況に対応しています。

このコードは、パスの下にある:

── client 
   ├── main.js 

// Global variables 
let keyboardHeight = 0, originalHeight = 0; 

Meteor.startup(() => { 
    if(Meteor.isCordova){ 
     StatusBar.hide(); 

     // ionic plugin defaults to hide it 
     cordova.plugins.Keyboard.hideKeyboardAccessoryBar(false); 

     // Android specific events 
     isAndroid = cordova.platformId == 'android'; 
     if(isAndroid){ 
      // Handle android backbutton 
      document.addEventListener("backbutton", onBackButtonDown, false); 

      // Using ionic-plugin-keyboard 
      window.addEventListener("native.keyboardshow", onShowKeyboard, false); 
      window.addEventListener("native.keyboardhide", onHideKeyboard, false); 
     } 
    } 
}; 
onShowKeyboard = function(e){ 
    let elem = document.activeElement,  // Get the focused element 
     $parent = $(elem).scrollParent(); // Get closest scrollable ancestor (jQuery UI) 

    // If there is no scrollable parent, no need to continue processing 
    if($parent.length == 0){ 
     return; 
    } 

    // Check if the keyborad type has changed (i.e. from text to number) 
    if(keyboardHeight != e.keyboardHeight){ 
     keyboardHeight = e.keyboardHeight; 
    } 

    // Don't resize if the original height hasn't been reset by onHideKeyboard() 
    if(originalHeight == 0){ 
     originalHeight = $parent.height(); 
    } 

    // Subtract keyboard height from parent height + accessory bar height 
    // Add some class to the parent, to be able to get it back to normal state onHideKeyboard() 
    $parent.height(originalHeight - keyboardHeight + 50).addClass('adjusted'); 

    // Give the keyboard time to show 
    setTimeout(function() {  
     // Scroll to active element 
     document.activeElement.scrollIntoView({ 
      behavior: "smooth", // or "auto" or "instant" 
      block: "center"  // or "start" or "end" 
     }); 
    }, 100); 

    // Unbind DOM object from HTML for garbage collection 
    elem = null; 
    $parent.prevObject = null; // To avoid memory leak (for any jQuery DOM object) 
    $parent = null; 
}; 
onHideKeyboard = function(e){ 
    let s = $('.adjusted').attr('style'); 
    s = s.replace(/height.*;/, ''); 
    $('.adjusted').attr('style', s).removeClass('adjusted'); 
    keyboardHeight = 0; 
    originalHeight = 0; 
}; 
関連する問題