尽管 Senscha 声称 ExtJS 在移动设备上不受支持,但它运行良好。我唯一的烦恼是弹出菜单的子菜单需要两次触摸(“点击”)才能激活。
似乎第一次触摸激活了菜单,第二次触摸激活了菜单选项本身。在具有多个选项的菜单中,单击任何选项一次会导致所有选项都可单击。
我有一个带有复选框的弹出菜单,它们有同样的问题。单击 1 激活(即蓝色背景)选项,单击 2 实际单击复选框。
我确信有一种方法可以告诉菜单的原型将第一次触摸注册为点击,但我一直找不到它。任何帮助将不胜感激!
我不敢相信。我想我找到了办法!非常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');
});
有各种参数,但没有运气。