Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/38.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 屏幕卡在sencha触摸选择字段更改侦听器中_Android_Iphone_Sencha Touch_Extjs - Fatal编程技术网

Android 屏幕卡在sencha触摸选择字段更改侦听器中

Android 屏幕卡在sencha触摸选择字段更改侦听器中,android,iphone,sencha-touch,extjs,Android,Iphone,Sencha Touch,Extjs,我对sencha touch有一个奇怪的问题。更改“选择”字段中的值时,屏幕卡住了。我有一个应用程序,其中有选择字段,在选择字段值发生变化时,我应用了一些规则。规则是删除所有屏幕元素并重新添加 下面是代码快照 现在,它与chrome浏览器、safari浏览器和iPad设备浏览器配合得非常好。但现在它给iPhone和Android设备带来了奇怪的问题。屏幕卡住了。更改“选择”字段中的值后,不允许发生任何事件 采取的步骤;此外,我在源代码的每一步都将alert作为记录器,以确保无限循环。我还放置了异

我对sencha touch有一个奇怪的问题。更改“选择”字段中的值时,屏幕卡住了。我有一个应用程序,其中有选择字段,在选择字段值发生变化时,我应用了一些规则。规则是删除所有屏幕元素并重新添加

下面是代码快照

现在,它与chrome浏览器、safari浏览器和iPad设备浏览器配合得非常好。但现在它给iPhone和Android设备带来了奇怪的问题。屏幕卡住了。更改“选择”字段中的值后,不允许发生任何事件

采取的步骤;此外,我在源代码的每一步都将alert作为记录器,以确保无限循环。我还放置了异常处理程序,以确保发生错误。没有可能导致内存/运行时问题的错误,也没有运行ant无限循环

    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();     
}

我已经解决了这个问题。我不是每次都创建控件,而是从屏幕元素中删除和添加数据。Thant适合我的要求。无论如何,谢谢大家的支持

我可能找到了这个bug

selectfield无法计算iPhone屏幕的高度

在iPad上,高度是经过计算的,因此selectfield选择器会显示出来,屏幕的其余部分会被屏蔽,直到您关闭选择器为止

在iPhone上,选择器实际上是在屏幕上创建和绘制的,它只是不可见,因为假定屏幕要大得多。即选择器位于屏幕下方不可见部分。它感觉屏幕被卡住/停止,因为屏蔽仍然存在

如果考虑到iPhone屏幕的高度,您降低了相关面板的高度,那么您应该可以让一切正常工作


希望这对别人有帮助。天知道我花了足够的时间去找它

尝试删除stateList2的id属性。您正在创建多个id相同的Ext.form.Select对象。这可能会导致奇怪的问题…@ilija139我已从Ext.form.Select中删除了id属性。但问题仍然存在,那我就不知道了。您应该更改整个代码。如果要更改表单中的项目。选择,则需要删除项目并添加新项目,而不是删除整个对象,然后创建新项目。代码结构不好,您可能正在耗尽内存或类似的东西,或者某些不定式循环事件或递归。@ilija139。。我非常感谢你的迅速答复。甚至我也想过改变整个业务逻辑。我很担心,因为它在ipad设备和safari/chrome上都能正常工作。