読者です 読者をやめる 読者になる 読者になる

UITableViewCell の imageView をタップしたとき処理を行う方法

UITapGestureRecognizer を使う。 ついでに、タップされた位置からセルの indexPath も取得してみる。

// タップされた位置からセルの indexPath を取得
- (void)imageViewTouched:(UITapGestureRecognizer*)sender
{
    CGPoint point = [sender locationInView:self.tableView];
    NSIndexPath *indexPath = [self.tableView indexPathForRowAtPoint:point];
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:self.cellIdentifier
                                                            forIndexPath:indexPath];

    // imageView をタップしたときイベントが発生するようにする
    [cell.imageView setUserInteractionEnabled:YES];
    UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self
                                                                          action:@selector(imageViewTouched:)];
    [tap setNumberOfTouchesRequired:1];
    [tap setNumberOfTapsRequired:1];
    [cell.imageView addGestureRecognizer:tap];

    // セルに値をつめるのは省略

    return cell;
}