-->

添加鼠标滚轮来煎茶桌面应用程序(Adding mousewheel to Sencha Deskto

2019-10-20 08:00发布

所以,应该优势,使用煎茶是能够对多个平台1的代码库。 我有一个项目,我需要在iOS,安卓,PC和Mac。 我发现,我可以使用煎茶触摸自动建立到移动设备和那些把手手指轻扫事件。 我所遇到的问题是,当我建立一个桌面应用程序,那么它不以我的鼠标滚轮响应。

我一直对煎茶论坛,这个问题是没有答案在一个地方,而在另一个他们承诺这2年多前的支持。 任何第三部分的解决方案,我发现无论是不正确的记录或将无法正常工作。 在其他地方我已被告知,煎茶触摸是移动开发,但ExtJS的是台式机,但我真的不希望有另建代码库只是滚轮。

Answer 1:

有一个的jsfiddle 这里那里delta返回1 ,当你鼠标滚轮了, -1 ,当你鼠标滚轮下来。

var doScroll = function (e) {
    // cross-browser wheel delta
    e = window.event || e;
    var delta = Math.max(-1, Math.min(1, (e.wheelDelta || -e.detail)));

    // Do something with `delta`
    console.log(delta);

    e.preventDefault();
};

if (window.addEventListener) {
    window.addEventListener("mousewheel", doScroll, false);
    window.addEventListener("DOMMouseScroll", doScroll, false);
} else {
    window.attachEvent("onmousewheel", doScroll);
}

把这段代码到你的应用程序初始化块。 现在,这个代码将获得无论哪个元素已经在您的应用程序运行在任何地方focus 。 我在我的应用程序,每一个我的网页只有一个需要滚动1元幸运。

取代console.log(delta); 与确定哪个元件是有源/哪个元素是需要滚动的,并且代码滚动它的代码。

var scrollMe = Ext.getCmp("componentToScroll");
var currentY = scrollMe.getScrollable().getScroller().position.y;
var pageHeight = document.getElementById("orderList").clientHeight;;
var containerHeight = 722; //the defined height of the scrollMeContainer

var newY = currentY;
if (delta === 1) {
    if (currentY >= 30) {
        newY = currentY - 30;
    }
    else {
        newY = 0;
    }
}
else if (delta === -1) {
    if (currentY <= containerHeight - pageHeight - 30) {
        newY = currentY + 30;
    }
    else {
        newY = containerHeight - pageHeight;
    }
}
scrollMe.getScrollable().getScroller().scrollTo(0, newY);


文章来源: Adding mousewheel to Sencha Desktop App