2014-05-06 96 views
2

我的應用程序即將完成,但有一個錯誤,我必須在發佈之前進行排序。該應用程序使用Cordova 3.4和Sencha爲iOS和Android構建「原生」應用程序(該錯誤僅涉及iOS)Sencha iOS picker bug

基本上,當選取器值發生變化時,除非用戶足夠快速地點擊完成,它恢復到以前的值 - 很難解釋! Here是一個顯示錯誤的視頻。

如前所述,這只是iOS上的一個問題(Android很好)。還值得注意的是,當應用程序中的其他選擇器中有兩個值選項時,此錯誤不存在。例如,時間選擇器(小時數&分鐘)和日期(第&個月)沒有這個錯誤 - 只有單個值選取器有問題。

任何想法?

回答

5

我剛剛在我們的產品中解決了這個問題,在iPhone上調試的男孩是一個正確的痛苦,當你只有一個Windows桌面!

本質上,似乎發生的情況是,當一個插槽的選擇發生變化時,內部的selectedIndex屬性正在更新,但是_value不是 - 並且它似乎是正在諮詢的_value。

我創建了一個新的時隙等級如下,重寫doItemTap確保值設置適當(me._value = me.getValue(true);):

Ext.define('Ext.ux.FixedSlot', { 
    extend: 'Ext.picker.Slot', 
    xtype : 'fixedslot', 
    doItemTap: function(list, index, item, e, event) { 
     var me = this; 
     me.selectedIndex = index; 
     me.selectedNode = item; 
     me._value = me.getValue(true); 
     me.scrollToItem(item, true); 
    } 
}); 

然後在我的選擇器中定義的配置(我們有一個類定義爲一個子類field.Select),我指示它用我的新插槽類型(defaultType: 'fixedslot'):

Ext.define('Ext.ux.MyFixedPicker', { 
    extend: 'Ext.field.Select', 
    config : { 
    defaultPhonePickerConfig : { defaultType: 'fixedslot' } 
    } 
}); 

我希望,可以幫助你避免一些我最近六小時的痛苦!我仍然無法準確解釋爲什麼/在Sencha觸摸屏的哪個位置很重要,但現在看來它可以解決問題並達到我們的包裝截止日期!