0

我有一个带有几个文本字段和一个日期选择器字段的字段集。

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

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

有什么解决方法吗?我可以延迟日期选择器的弹出,直到键盘放回原位吗?

顺便说一句,Sencha Touch 选择字段也会发生这种情况

4

1 回答 1

1

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

触摸/src/picker/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!
于 2013-08-09T00:35:26.193 回答