Нельзя добавить один распознаватель касаний для нескольких просмотров.Создайте новый для каждого представления, к которому вы хотите добавить распознаватель касаний.Поскольку вы используете табличное представление, просто сделайте это в методе tableView:cellForRowAtIndexPath:
:
- (UITableViewCell *) tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
// usual implementation
static NSString *cellIdentifier = @"CellIdentifier";
UITableViewCell *cell = [tableView dequeue ...];
if (!cell) {
cell = [[UITableViewCell alloc] init....];
// add new gesture recognizer here.
}
// setup cell: set the image (just an example)
cell.imageView.image = [images objectAtIndex:indexPath.row];
return cell;
}
Вместо использования тегов, упомянутых в других ответах, и просто получения просмотра изображения, попробуйте поработать с базовой моделью.При обработке касания найдите indexPath, чтобы узнать, к какому объекту модели получить доступ:
- (void)handleTap:(UITapGestureRecognizer *)recognizer {
UIImageView *imageView = (UIImageView *)recognizer.view;
// assumes the image view is direct subview of the cell
// change to match your cell structure
UITableViewCell *cell = (UITableViewCell *) [imageView superview];
// get the index path for the cell clicked
NSIndexPath *indexPath = [self.tableView indexPathForCell:cell];
// TODO: Use index path to get full image to display
}
Таким образом, вы узнаете точную строку кликаемого изображения, чтобы вы могли получить доступ к своей модели, чтобы получить доступ к полному изображению.для отображения.