簡體   English   中英

iPhone - 檢測UITableViewCell子視圖的觸摸

[英]iPhone - Detect touches on subview of UITableViewCell

我正在使用包含UIImageView子視圖的單元格填充UITableView。 我想檢測圖像視圖上的觸摸,所以我也添加了一個手勢識別器。 然而,沒有任何東西被稱為。 這是我的代碼:

UIImageView *delete = [[UIImageView alloc] initWithFrame:CGRectMake(1.0, 8.0, 33.0, 33.0)];
delete.image = [UIImage imageNamed:@"Delete.png"];
delete.userInteractionEnabled = YES;
delete.contentMode = UIViewContentModeCenter;

UIGestureRecognizer *gesture = [[UIGestureRecognizer alloc] initWithTarget:self action:@selector(deleteTapped)];
gesture.delegate = self;

[delete addGestureRecognizer:gesture];
[self.cellView addSubview:delete];

注意:我在技術上將圖像視圖添加到容器中,然后將其添加到單元格本身,因此[self.cellView addSubview:delete] 但我有相同的結果直接將圖像視圖添加到單元格。

根據類似帖子的這個答案,這是iOS 5.0中的一個已知錯誤; 解決方案是覆蓋委托方法以強制手勢識別器開始:

修復是在手勢識別器的委托中覆蓋-gestureRecognizerShouldBegin:並返回YES。 應該在iOS 5.x的未來版本中修復此錯誤。 只要您沒有使用新的UITableViewCell復制/粘貼API,這只是安全的。

我試過這個,但委托方法永遠不會被調用。 我已經設置了delegate屬性(見上文)並實現了<UIGestureRecognizerDelegate> ,如下所示:

- (BOOL)gestureRecognizerShouldBegin:(UIGestureRecognizer *)gestureRecognizer
{
    NSLog(@"gesture delegate method called");
    return YES;
}

有沒有人知道為什么這仍然不起作用? 或者也許iOS 5.1中這個bug的狀態是什么?

嘗試為此委托方法返回YES - (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer;

如果要檢測點擊操作,請使用UITapGestureRecognizer

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM