1

我有一个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,我将侦听器放在以下事件上,作为捕获选择更改并强制执行hideor的一种手段blur,但事实证明,它们仅在桌面(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 的所有后果。因此,如果我绝对必须解决这个问题,这是我在潜入迁移之前的最后一次努力。

4

1 回答 1

0

埃加德。所以事实证明,虽然没有在桌面浏览器中渲染,但移动端渲染selectfield显示了一组“完成”和“取消”按钮。

由于桌面版本在选择时工作而不显示这些确认按钮,我忘记了selectfield显示确认按钮的移动渲染,而不是能够在选择器外部点击/单击或在进行选择时清除掩码。

在我的特殊情况下,我有一些 CSS 工具栏规则会遮挡selectfield选择器中的按钮。

因此,只需找到正确的 CSS 选择器来显示在移动设备上隐藏的按钮(尽管在桌面上不是必需的或可见的)。

/* Override toolbar padding for selectfield confirmation toolbar */
.x-picker .x-toolbar .x-layout-box-inner {
    margin-top: -35px;
}
于 2013-09-01T22:45:43.663 回答