2011-09-20 107 views
1

我有一個自定義UITableViewCell,其中有四個UIImageView。我想檢測這些imageViews的觸摸,並通知我的ViewController(其中包含UITableView)哪個ImageView在哪個單元格內被點擊。我該怎麼做?如何檢測UITableViewCell內部的觸摸

+1

爲什麼不用4個按鈕來代替...? – user387184

回答

1

有幾個變種,以擊中目標。事實上,你在細胞水平上做什麼並不重要。它可以是按鈕,帶有輕觸手勢識別器的圖像視圖或自定義繪圖以及繼續觸摸事件。我現在不會爲您提供代碼,因爲您已經提供了很多代碼,並且可能會通過少量搜索找到更多代碼,並認爲它可能是按需提供的。真正的「問題」在於將消息傳送給控制器。爲此我找到了兩個合理的解決方案。首先是通知,其次是代表團。請注意,通知方法可能會導致點擊事件和實際事件發生之間的可見延遲,因爲有時候通知會以很小的延遲傳遞給對象...
希望它有幫助。

+0

我終於實現了它使用UIButtons而不是UIImageView(UIImageView將工作,但我必須添加手勢識別器,UIButton是一個更乾淨的解決方案),並將代理方法添加到UITableViewCell中,通知視圖控制器何時哪個按鈕已被按下。 – rushafi

1

使用四個按鈕並使用不同的標籤值設置它們。然後只需檢查標記值以查看哪一個被按下。

4

試試這個:

-(void)createGestureRecognizers { 

    for(/*each of the UIImageViews*/) { 
     UITapGestureRecognizer *singleFingerTap = [[UITapGestureRecognizer alloc] 

     initWithTarget:self action:@selector(handleSingleTap:)]; 

     singleFingerTap.numberOfTapsRequired = 1; 

     [imageView addGestureRecognizer:singleFingerTap]; 

     imageView.tag = i; 

     [singleFingerTap release]; 
    } 

} 


- (void)handleSingleTap:(UIGestureRecognizer *)sender { 

    UIImageView *imageView = (UIImageView *)sender.view;//this should be your image view 

} 
+0

偉大的解決方案,但它沒有爲我添加imageView.userInteractionEnabled = YES;謝謝@Valentin Radu – DeZigny