我有一个包含几个文本字段和一个datepicker字段的字段集。
除非文本字段处于焦点并且ios键盘在视图中,否则一切正常。如果我单击键盘顶部的下一个(或后退)按钮,并因此选项卡进入日期选择器,而不是停靠在屏幕底部的日期选择器,它会飞到中间的某个位置。我猜这是因为键盘推高了webview,而日期选择器仍然试图停靠在现在位于屏幕中间的底部。
这发生在模拟器(见截图)和我的设备上。
这有什么解决方法吗?我可以延迟弹出日期选择器直到键盘重新出现吗?
BTW这也发生在Sencha Touch选择字段
答案 0 :(得分: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 / 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!