touchstart和touchend事件不工作在tableview的钛(Android)

touchstart and touchend events not working on tableview of titanium(Android)

本文关键字:的钛 tableview Android 工作 touchend 事件 touchstart      更新时间:2023-09-26

我正在使用Titanium开发Android应用程序。我想在titanium的tableview上应用touchstarttouchend事件。我尝试了以下代码:

var userWin = Ti.UI.currentWindow;
var data = [];
for (var i=0;i<5;i++)
{
    var row = Ti.UI.createTableViewRow({height:'auto',className:"row"});
    var username = Ti.UI.createLabel(
    {
        text:'user name',
        height:'auto',
        font:{fontSize:12, fontFamily:'Helvetica Neue', color:'#000'},
        width:'auto',
        color:'#000',
        textAlign:'left',
        top:0,
        left:35,
    });row.add(username);
    var imageView = Ti.UI.createImageView(
    {
        image:'../images/user.png',
        left:0,
        top:0,
        height:25,
        width:25
    });row.add(imageView);          
}
usertable_table.setData(data);
userWin.add(feed_table);    
userWin.addEventListener('touchstart', function(e){
    alert(e.x);
  // Ti.API.debug(['row touchstart', e]); 
});

如果我点击表格的行它不会弹出,不会应用touchstart事件。但如果我点击像image或name这样的行元素,它会给出输出,也就是value e.x。即使我将两个事件应用于当前窗口,它也会给出输出。但如果我应用于表视图的行或表视图它就不起作用了。实际上我正在尝试在桌子上滑动事件,但那也不工作,所以我尝试touchstart和touchend事件。有什么办法可以解决这个问题吗?

对不起,但你可以在钛文档安卓仍然不提供touchstarttouchend的TableViewRow。也许你找到了一个其他的解决方案,但也许别人有类似的麻烦,所以我想提供一个可能的解决方案的想法。不幸的是,您可以向该行添加侦听器,然后单击该行的一个元素。这是因为您可以在SDK 3.0.0及更新版本中控制事件冒泡。在以前的版本中,没有阻止事件冒泡的选项。

滑动是Android也不提供的手势。如果你想使用类似滑动的手势,你可以在一行中所有元素的顶部放置一个透明视图。

Ti.UI.createView({
  width: Ti.UI.FILL,
  height: Ti.UI.FILL, //should be row height, can be set explicitely if known
  backgroundColor: '#0000', //should be transparent
});

那么你可以将所有类似滑动手势的算法应用于这个视图。虽然这个vie是用户可用的最顶层元素,但它应该对所有用户输入做出反应。但是要注意,这个透明视图后面的其他元素的侦听器将不再响应。