我对sencha touch有一个奇怪的问题。 更改选择字段中的值会停留在屏幕上。我有一个应用程序,其中有选择字段,而在更改选择字段值时,我正在应用一些规则。规则是删除所有屏幕元素并重新添加。
以下是代码快照。
现在,使用chrome,safari浏览器和iPad设备浏览器完全正常。但现在它在iPhone和Android设备中给出了奇怪的问题。屏幕卡住了。更改选择字段中的值后,不允许任何事件。
采取的步骤;此外,我在源代码的每一步都将alert作为记录器,以确保无限循环。我还放置了异常处理程序以确保发生错误。没有错误,无论是无限循环运行都可能导致内存/运行时问题。
App.views.MySampleScreen = Ext.extend(Ext.Panel, {
initComponent : function() {
var titlebar = {
dock : 'top',
xtype : 'toolbar',
cls: 'x-panel-title',
title : "Home Screen"
};
var buttonbar = {
xtype : 'toolbar',
dock : 'bottom',
cls: 'x-panel-footer',
items : [
{xtype : "spacer"}
]
};
var myFieldSet = new Ext.form.FieldSet({
xtype: 'fieldset',
id : 'myFieldSet',
name: 'myFieldSet'
});
var formBase = new Ext.form.FormPanel({
ui: 'round',
id: 'standardFormBase',
items: [myFieldSet],
});
Ext.apply(this, {
scroll: 'vertical',
pinHeaders: true,
dockedItems : [titlebar, buttonbar],
items : [formBase],
listeners: {
beforeactivate: function(panel) {
createAndInitScreen();
}
}
});
App.views.MySampleScreen.superclass.initComponent.call(this);
}
});
Ext.reg('App.views.MySampleScreen', App.views.MySampleScreen);
function createAndInitScreen(){
var myFieldSet = Ext.getCmp("myFieldSet");
myFieldSet.removeAll(true);
var stateList2 = new Ext.form.Select({
label: 'State',
name: 'state',
id: 'stateLis2t',
widht: '100%',
autoLoad: true,
labelWidth: '40%',
options: [{
text: 'Test', value: 'Test'
}, {
text: 'Test2', value: 'Test2'
}, {
text: 'Test3', value: 'Test3'
}],
listeners: {
afterrender: function(ele) {
},
change: function(field, value) {
createAndInitScreen(); // Here is the problem
// if i remove this then this works, but my need
//is to call CreateAndInitScreen after value change in select ()
}
}
});
myFieldSet.items.add(stateList2);
myFieldSet.show();
myFieldSet.doLayout();
}
答案 0 :(得分:0)
我已经解决了这个问题。我不是每次都创建控件,而是从屏幕元素中删除和添加数据。 Thant可以满足我的要求。无论如何,谢谢大家的支持。
答案 1 :(得分:0)
我可能已经发现了这个错误。
选择字段无法计算出iPhone上屏幕的高度。
在iPad上计算高度,以便选择区域选择器显示,屏幕的其余部分被屏蔽,直到你关闭选择器。
在iPhone上,选择器实际上是在屏幕上创建并绘制的,因为屏幕被假定为更大,所以它不可见。即拾取器在屏幕上较低(在不可见的部分。感觉屏幕卡住/停滞,因为屏蔽仍然发生。
如果您降低相关面板的高度(考虑到iPhone屏幕高度),您应该可以正常工作。
希望这有助于某人。天知道我花了足够的时间找到它! :)