Sencha touch datepicker 和 ios 软键盘
Posted
技术标签:
【中文标题】Sencha touch datepicker 和 ios 软键盘【英文标题】:Sencha touch datepicker and ios soft keyboard 【发布时间】:2013-06-13 06:54:19 【问题描述】:我有一个包含几个文本字段和一个日期选择器字段的字段集。
一切正常,除非文本字段处于焦点且 ios 键盘处于视图中。如果我单击键盘顶部的下一个(或后退)按钮,然后单击日期选择器,而不是将日期选择器停靠在屏幕底部,它会飞到中间的某个位置。我猜这是由于键盘将 webview 向上推,而 datepicker 仍试图停靠到现在位于屏幕一半的底部。
这发生在模拟器(见屏幕截图)和我的设备上。
有什么解决方法吗?我可以延迟日期选择器的弹出,直到键盘放回原位?
顺便说一句,Sencha Touch 选择字段也会发生这种情况
【问题讨论】:
【参考方案1】:您可以更新选择器组件代码:
touch/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!
【讨论】:
以上是关于Sencha touch datepicker 和 ios 软键盘的主要内容,如果未能解决你的问题,请参考以下文章
Sencha Touch实战OA系统开发|Sencha Touch项目教程
[Sencha ExtJS & Touch] 在Sencha(Extjs/Touch)应用程序中使用plugins(插件)和mixins(混入)
如何使用 sencha-touch.jsb3 构建 Sencha Touch?
使用 sencha touch 和 eclipse indigo