Sencha iOS选择器bug

bar*_*ney 2 extjs picker ios cordova

我的应用程序已接近完成,但有一个错误,我必须在发布前进行排序.该应用程序使用Cordova 3.4和Sencha为iOS和Android构建一个"原生"应用程序(该bug仅与iOS有关)

基本上,当更改选择器值时,除非用户在单击"完成"方面的速度足够快,否则它将恢复为之前的值 - 难以解释!是一个显示行动中的错误的视频.

如前所述,这只是iOS上的问题(Android很好).值得注意的是,当应用程序中的其他选择器中有两个值选项时,此错误不存在.例如,时间(小时和分钟)和日期(日和月)的选择器没有此错误 - 只有单个值选择器有问题.

有任何想法吗?

小智 5

我只需要在我们的产品中解决这个问题,当你只有一个Windows桌面时,iPhone上的男孩调试是一个正确的痛苦!

基本上似乎正在发生的事情是当插槽的选择发生变化时,内部的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);
  }
});
Run Code Online (Sandbox Code Playgroud)

然后在我的选择器定义配置(我们有一个类定义为field.Select的子类),我指示它使用我的新插槽类型(defaultType: 'fixedslot'):

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

我希望这可以帮助你避免过去六个小时的一些痛苦!我仍然无法准确解释为什么/在Sencha Touch源中的哪个地方很重要,但现在它似乎可以解决问题并满足我们的包装截止日期!