如何检测ListView上的滚动事件?

时间:2013-08-28 14:06:54

标签: javascript titanium

有没有人知道在ListView上检测垂直滚动/滑动手势的方法?我试着听滑动事件,但它只会从左到右和从右到左的手势触发,而不是向上或向下。我也尝试在父视图上侦听,这导致了相同的行为。 提前感谢任何提示或技巧! :)

2 个答案:

答案 0 :(得分:2)

似乎不支持这种方法,但一种方法是将列表视图高度设置为Ti.UI.SIZE,以便它不会滚动,然后将其放在ScrollView中。然后在ScrollView上监听scroll事件。尝试这样的事情:

// Vertical scroll view
var parentScrollView = Ti.UI.createScrollView({
    height : 'auto'
});

// Make a list view that does not scroll
var listView = Ti.UI.createListView({
   height : Ti.UI.SIZE,
   ... Other initialization here ...
});

parentScrollView.add(listView);
parentScrollView.addEventListener('scroll', function(e) {
    // This lets you know where you scrolled to
    var scrollX = e.x;
    var scrollY = e.y;

    // Alternatively use contentOffset
    var contentOffsetScoped = e.source.contentOffset;
    var contentOffsetSame = parentScrollView.contentOffset;
});

这是一个极简主义的例子,但有效。请注意,此方法可能会从ListView控件中获取任何性能提升,因此最好只使用TableView进行转换。

答案 1 :(得分:1)

在夜间版本中有一个问题的修复,但目前这是一个未解决的问题

https://jira.appcelerator.org/browse/TIMOB-14317