Так как мы знаем, что изображение находится в ячейке, и я ненавижу подклассы, мы можем собрать небольшой забавный хакер. Вы можете просто использовать свойство cell.imageView и добавить категорию в UIImageView:
- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event{
if([self.superview isKindOfClass:[UITableViewCell class]]){
if([touches anyObject].tapCount == 1){
//Image was tapped, issue notification, we use the cell as the object
[[NSNotificationCenter defaultCenter] postNotificationName:@"CellImageTapped" object:self.superview]
//just return after the notification
return;
}
}
//if it wasn't a tap, just forward the touch
[super touchesEnded:touches withEvent:event];
}
Затем в контроллере табличного представления можно разрешить выбранную ячейку следующим образом:
NSIndexPath indexOfSelectedCellImage = [self.tableview indexPathForCell:[notificaton object]];
Я не проверял, но суперпредставлением cell.imageView может быть contentView, в этом случае просто подставьте следующее:
…if([self.superview.superview isKindOfClass:[UITableViewCell class]])…
…[[NSNotificationCenter defaultCenter] postNotificationName:@"CellImageTapped" object:self.superview.superview]…
Примечание. Убедитесь, что контроллер табличного представления подписан на уведомление.