2013-06-13 30 views
0

我有一个fieldset与几个文本字段和datepicker字段。Sencha触摸日期选择器和ios软键盘

除了当文本字段处于焦点并且ios键盘处于视野中时,所有工作都可以正常工作。如果我单击键盘顶部的下一个(或后退)按钮,因此可以将其拖到日期选择器中,而不是将日期选择器停靠在屏幕底部,它会飞到中间的某个位置。我猜这是由于键盘推高了webview和日期选择器仍然试图停靠在屏幕上半部分的底部。

这发生在模拟器(见截图)和我的设备上。

有没有解决方法?我可以推迟日期选择器弹出,直到键盘退出?

顺便说一句,这也恰好与煎茶触摸选择字段

回答

1

您可以更新选择器组件代码:

触摸/ src目录/选择器/ Date.js:

/** 
* Update by ZWD/gloot 
* Date: 7/30/2013 
*/ 
onDoneButtonTap: function() { 
    var me = this; 
    var oldValue = this._value, 
     newValue = this.getValue(true), 
     testValue = newValue; 

    if (Ext.isDate(newValue)) { 
     testValue = newValue.toDateString(); 
    } 
    if (Ext.isDate(oldValue)) { 
     oldValue = oldValue.toDateString(); 
    } 

    if (testValue != oldValue) { 
     this.fireEvent('change', this, newValue); 
    } 

    setTimeout(function() { 
     me.hide(); 
     me.inputBlocker.unblockInputs(); 
    }, 300); 

    Ext.hideKeyboard(); 
} 

和选择器/ Picker.js

/** 
* @private 
* Called when the done button has been tapped. 
* Update by ZWD/gloot 
* Date: 7/30/2013 
*/ 
onDoneButtonTap: function() { 
    var me = this, oldValue = me._value, 
     newValue = me.getValue(true); 

    if (newValue != oldValue) { 
     me.fireEvent('change', me, newValue); 
    } 

    setTimeout(function() { 
     me.hide(); 
     me.inputBlocker.unblockInputs(); 
    }, 300); 

}, 

/** 
* @private 
* Called when the cancel button has been tapped. 
* Update by ZWD/gloot 
* Date: 7/30/2013 
*/ 
onCancelButtonTap: function() { 
    var me = this; 
    me.fireEvent('cancel', me); 

    setTimeout(function() { 
     me.hide(); 
     me.inputBlocker.unblockInputs(); 
    }, 300); 
} 

//////////////////////////////////////// //////////////

the setTimeout method can solve the question!