2

我正在使用 Titanium 开发 Android 应用程序。我想在钛的 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 事件。但是,如果我单击图像或名称之类的行元素,则会给出输出,即ex的值。即使我在当前窗口上应用了这两个事件,s 给出输出。但如果我应用在表格视图或表格视图的行上它不起作用。实际上,我正在尝试在桌子上进行滑动事件,但这也不起作用,因此我尝试了 touchstart 和 touchend 事件。有什么办法可以解决这个问题。

4

1 回答 1

1

抱歉,正如您在 Titanium Docs 中看到的那样,touchstart Android仍然不提供touchendTableViewRow。也许您找到了其他解决方案,但也许其他人也遇到了类似的麻烦,所以我想提供一个可能的解决方案的想法。不幸的是,您可以向该行添加一个侦听器,然后您可以单击该行的一个元素。这是因为您可以在 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 是用户可用的最顶层元素,但它应该对所有用户输入做出反应。但请注意,此透明视图后面的其他元素上的侦听器将不再做出反应。

于 2013-02-18T19:41:03.787 回答