2016-01-28 36 views
0

在我的控制器中,我通過構建TableViewRow的數組並動態填充視圖&圖像來動態填充TableView行。在Titce Appcelerator中未觸發的點擊事件

下面是創建視圖&的ImageView並在視圖中單擊事件的代碼:運行此代碼時,錶行中,我可以看到圖像

// Create product image view 
var productImageView = Titanium.UI.createView({ 
    borderRadius: 5, 
    left: 10, 
    top: 10, 
    bottom: 10, 
    width: 130, 
    backgroundColor: '#FFFFFF', 
    productName: Name, 
    imageUrl: ThumbnailUrl, 
}); 
productImageView.add(Titanium.UI.createImageView({ 
    backgroundColor: '#FFFFFF', 
    defaultImage: 'image-missing', 
    image: ThumbnailUrl 
})); 
productImageView.addEventListener('click', function(e) { 
    if (e.source.productName && e.source.imageUrl) { 
     Alloy.createController('view_product_image', { ProductName: e.source.productName, ImageUrl: e.source.imageUrl }).getView().open({ 
      modalTransitionStyle: Ti.UI.iPhone.MODAL_TRANSITION_STYLE_COVER_VERTICAL, 
      modalStyle: Ti.UI.iPhone.MODAL_PRESENTATION_FORMSHEET 
     }); 
    } else { 
     console.log('data not set'); 
    } 
}); 

。當我點擊它時,沒有任何反應。我試圖直接在ImageView上附加click事件,但仍然沒有任何反應。

任何想法爲什麼點擊事件沒有被解僱?我應該訂閱不同的活動嗎?

+0

您可以嘗試直接將productName和imageUrl屬性附加到TableViewRow對象,而不是productImageView。並將偵聽器添加到TableView。 –

回答

0

我試過你的代碼,它適用於iOS和Android上的我。 也許,你可以顯示TableView創建?

但是,儘管您的解決方案是正確的,但是由於要創建的偵聽器的數量,在您的TableView中添加不在TableViewRow中的事件偵聽器是更可取和更高效的,因此僅減少了單擊事件的範圍在圖像中,您檢查e.source是否具有productNameimageURL屬性(例如),否則您可以推斷該點擊位於圖像之外。

嘗試這樣的:

$.tableView.addEventListener('click', function(e) { 
    if (e.source.productName && e.source.imageUrl) 
     console.log('hit') 
}); 
2

您沒有收到點擊事件,因爲你的事件源是ImageView的,它有沒有產品名稱和IMAGEURL 財產

要接收點擊事件的視圖,您需要將touchEnabled屬性設置爲false,以便您的圖像視圖。

​​

但是我認爲不是添加監聽到每個查看您可以添加一個共同監聽到的tableView和其他人所建議的處理基於e.source.productName財產的事件。