"Ext.Viewport.on('painted'"-ソリューションでスクロールの問題が発生しました。ビューポートの高さがウィンドウの高さよりも大きくなるため、向きを変更した後、ページ全体をスクロールできませんでした。(Ext.Viewport.getHeight()向きを変更した後は、Ext.Viewport.getWindowHeight()と同じではありません。)
上書きされた入力を使用して回避策を作成しました:
ファイルapp/overrides / field/Input.jsを作成します
Ext.define('myApp.overrides.field.Input', {
override: 'Ext.field.Input',
initialize: function() {
var me = this;
// Solves problem that screen keyboard hides current textfield
if (Ext.os.is.Android) {
this.element.on({
scope : this,
tap : 'onTap',
});
}
me.callParent();
},
onResize: function(input) {
var me = input;
//if input is not within window
//defer so that resize is finished before scroll
if(me.element.getY() + me.element.getHeight() > window.innerHeight) {
Ext.Function.defer(function() {
me.element.dom.scrollIntoView(false);
}, 100);
}
},
// Solves problem that screen keyboard hides current textfield in e.g. MyTimeRowForm
//old solution with Viewport.on('painted', gave scroll problem when changeing orientation
onTap: function(e) {
me = this;
window.addEventListener( "resize", function resizeWindow () {
me.onResize(me);
window.removeEventListener( "resize", resizeWindow, true );
}, true );
},
});
そしてそれをapp.jsに追加します
requires: ['myApp.overrides.field.Input']