2011-11-18 69 views
2

我正在開發使用Titanium.I想申請touchstarttouchend上titanium.I的實現代碼如下事件的Android應用程序嘗試下面的代碼:touchstart和touchend事件不工作的鈦的tableview(安卓)

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事件。但是,如果我點擊圖像或名稱等行的元素,它會給出輸出,即的範例,例如。即使我同時應用事件在當前窗口它給出output.But如果我應用在表視圖或表視圖的行它不工作。 Actully我試圖在桌上滑動事件,但也沒有工作,所以我試過touchstart和touchend事件。有什麼辦法可以解決這個問題嗎?

回答

1

對不起,但你儘可能read in Titanium Docs Android仍然不爲TableViewRow提供touchstarttouchend。也許你找到了其他解決方案,但也許別人有類似的麻煩,所以我想提供一個可能的解決方案的想法。 不幸的是,您可以向該行添加一個偵聽器,然後您可以單擊該行的一個元素。這可以起作用,因爲您可以在SDK 3.0.0和更新版本中控制事件bubbeling。在以前的版本中,沒有防止事件冒泡的選項。

滑動是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 
}); 

然後你就可以申請劃相似的手勢所有算法這一觀點。雖然這是用戶可用的最高級元素,但它應該對所有用戶輸入做出反應。但請注意,此透明視圖背後的其他元素的聽衆不會再有反應。

相關問題