ExtJS 4子菜单需要双击才能在iPad上激活

时间:2012-08-17 14:27:02

标签: ipad extjs

尽管Senscha声称移动设备不支持ExtJS,但它的效果非常好。我唯一的烦恼是,弹出菜单的子菜单需要两次触摸(“点击”)才能激活。

似乎第一次触摸激活菜单,第二次触摸激活菜单选项本身。在包含多个选项的菜单中,单击任何选项一次会导致所有选项都可单击。

我有一个带复选框的弹出菜单,这些都有同样的问题。单击一个激活(即蓝色背景)该选项,单击2实际上单击复选框。

我确信有一种方法可以告诉菜单原型将第一次触摸注册为点击,但我一直无法找到它。任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:0)

我无法相信。我想我找到了办法!非常hacky,但它确实有效。

Ext.util.Observable.observe(Ext.menu.Item);
Ext.menu.Item.on('activate', function(obj, The, eOpts) {
    if (obj.checkHandler) obj.checkHandler(obj);
    if (obj.handler) obj.handler(obj);
    if (obj.checkHandler || obj.handler) {
        if (obj.up().closable) obj.up().close();
        if (obj.up().up().closable) obj.up().up().close();
    }
});

稍后我将需要添加实际遍历树的代码以支持多级子菜单,现在一个是限制。

这个糟糕的东西可以通过简单地调用菜单的Click()事件来取代,但这似乎不起作用。我试过了:

Ext.menu.Item.on('activate', function(obj, The, eOpts) {
    obj.fireEvent('click');
});

有各种各样的参数,但没有运气。