Sencha触摸datepicker和ios软键盘

时间:2013-06-13 06:54:20

标签: sencha-touch-2

我有一个包含几个文本字段和一个datepicker字段的字段集。

除非文本字段处于焦点并且ios键盘在视图中,否则一切正常。如果我单击键盘顶部的下一个(或后退)按钮,并因此选项卡进入日期选择器,而不是停靠在屏幕底部的日期选择器,它会飞到中间的某个位置。我猜这是因为键盘推高了webview,而日期选择器仍然试图停靠在现在位于屏幕中间的底部。

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

这有什么解决方法吗?我可以延迟弹出日期选择器直到键盘重新出现吗?

BTW这也发生在Sencha Touch选择字段

1 个答案:

答案 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!