Selectfield卡在Sencha Touch&事件未在选择中触发

时间:2013-09-01 01:59:09

标签: javascript iphone extjs sencha-touch

我有一个selectfield可以在桌面上完美运行(滚动,选择,触发正确的事件,更新相应的字段等),但在运行时选择后不会消失在手机上(iPhone)。

选择后,选择字段“滚轮”不会消失,并且在点击遮罩(滚动拾取区域外)时甚至不会消失。同样,这只发生在移动设备上,在桌面上完全没问题。

听起来像一个框架错误?请继续阅读以获取更多线索......

{
    xtype: 'selectfield',
    id: 'editor-page',
    name: 'page',
    label: 'Page',
    labelWidth: 70,
    options: [
        {text: 'N/A',  value: 'N/A'},
        {text: '1',  value: '1'},
        {text: '2',  value: '2'},
        {text: '3',  value: '3'}
        // ...
    ]
}

我尝试过的事情(没有运气)

  • 根据我在网上看到的类似问题,我已经尝试过设置showAnimation: 'false'

  • 强制hideOnMaskTap: 'true'(即使默认情况下应该这样)

  • 设置modal: 'true'

  • 设置stopMaskTapEvent: 'false'(允许在选择器外部进行点击)

    (并且...以上的每一种组合,只是在框架怪癖或对我的相互依赖性的误解的情况下。)


在桌面上激活的Selectfield事件但在移动设备上没有激活(iPhone)?

selectfield上,我将听众置于以下事件中,作为捕捉选择更改并强制hideblur的方法,但事实证明,他们是只能在桌面(Chrome)上启动,而不能在移动版Safari中启动。

listeners: {
    'render': function (thisComponent) {
        alert("select!");                           
        thisComponent.blur();
    },
    'action': function (thisComponent) {
        alert("action!");
        thisComponent.blur();
    },
    'select': function (thisComponent) {
        alert("select!");
        thisComponent.blur();
    }
}            

最后,我讨厌承认,但是,我正在使用Sencha Touch 1.1.0

*喘气!哦,恐怖!*

此时,该项目可能没有足够的时间来考虑迁移到2.x的所有后果。因此,如果我绝对必须解决这个问题,这是我在深入迁移之前的最后努力。

1 个答案:

答案 0 :(得分:0)

扯扯。事实证明,虽然未在 桌面 浏览器中呈现,但selectfield 移动 呈现显示一组“完成”和“取消”按钮。

由于桌面版本在选择时无需显示这些确认按钮,我忘记了移动渲染selectfield显示确认按钮,而不是在选择器外点击/点击或清除掩码选择。

在我的特定情况下,我有一些CSS工具栏规则模糊了selectfield选择器中的按钮。

因此,只需要找到合适的CSS选择器来显示移动设备上隐藏的按钮(虽然桌面上没有必要或可见)。

/* Override toolbar padding for selectfield confirmation toolbar */
.x-picker .x-toolbar .x-layout-box-inner {
    margin-top: -35px;
}