Экран застревает в сенсорном сенча - PullRequest
1 голос
/ 30 января 2012

У меня странная проблема с сенсорным сенча. Изменение значения в поле выбора застряло на экране. У меня есть приложение, в котором есть поля Выбрать, и при изменении значения поля выбора я применяю некоторые правила. Правило состоит в том, чтобы удалить все элементы экрана и добавить его заново.

Ниже приведен снимок кода.

Теперь, Он работает абсолютно нормально с Chrome, браузером Safari и браузером устройства iPad. Но теперь это вызывает странную проблему в iPhone и Android-устройстве . Экран застревает. После изменения значения в поле выбора события не допускаются.

принятые шаги; Кроме того, я поставил оповещение в качестве логгера на каждом шаге исходного кода, чтобы обеспечить бесконечный цикл. Я также поместил обработчики исключений, чтобы гарантировать, что произошла ошибка. Нет ошибок, нет ни муравейного бесконечного цикла, который может вызвать проблемы с памятью / временем выполнения.

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

Ответы [ 2 ]

0 голосов
/ 28 августа 2012

Возможно, я нашел ошибку.

Поле выбора не может определить высоту экрана на iPhone.

На iPad высота рассчитывается таким образом, чтобы отображалось средство выбора поля выбора, а остальная часть экрана маскировалась до тех пор, пока вы не отклоните средство выбора.

На iPhone сборщик фактически создается и раскрашивается на экране, его просто не видно, так как предполагается, что экран намного больше.то есть сборщик находится ниже на экране (в невидимой части. Он чувствует, что экран застрял / застрял, потому что маскирование все еще происходит.

Если вы уменьшите высоту соответствующей панели (принимая во вниманиеВысота экрана iPhone), у вас должно быть все отлично работает.

Надеюсь, это кому-нибудь поможет. Бог знает, я потратил достаточно времени на его поиск! :)

0 голосов
/ 09 апреля 2012

Я исправил проблему с обходным путем.Вместо того, чтобы создавать элемент управления каждый раз, я удаляю и добавляю данные из элементов экрана.Thant отлично работает для моих требований.В любом случае спасибо всем за вашу поддержку.

...