2015-03-20 4 views
0

У меня есть ячейка с двумя изображениями в ней. Когда пользователь касается конкретного изображения, я хочу использовать NSLog, чтобы указать, какое изображение было нажато.Какой компонент ячейки был затронут

На данный момент я получаю только выбранную ячейку. Как я могу получить, какой образ был затронут?

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { 
    NSLog(@"CELL CLICKED WAS %ld",indexPath.row); 
} 
+0

Вы можете добавить 'TapGestures' на изображениях, и обрабатывать его отдельно. Невозможно обработать в 'didSelectRowAtIndexPath'. – iphonic

+0

см. Этот вопрос http://stackoverflow.com/questions/20655060/get-button-click-inside-ui-table-view-cell/20655223#20655223, это может помочь вам – Mani

ответ

0

Внедрите свой собственный UITableviewCell.

В этом исполнении touchesBegan, touchesMoved, touchesEnded.

В touchesBegan вы можете получить объект touch, получить его местоположение и посмотреть, находится ли он внутри UIImage.

Нечто подобное.

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event 
{ 
     UITouch *aTouch = [touches anyObject]; 
     CGPoint touchPoint = [aTouch locationInView:self.superview]; 
CGRect imageRect = myImage.frame; 
if(CGRectContainsPoint(imageRect,touchPoint) 
{ 
NSLog(@"here"); 
} 

} 
+0

Легко добавить TapGesture без Custom Cell, хотя ваше решение также будет работать. – iphonic

+0

@iphonic yup you my good sir are correct. Если я использую жесты, как бы я узнал, какой жест пришел из того изображения какой ячейки? Возможно, теги? –

0

Вы должны добавить любой UIControl над изображениями отдельно, чтобы узнать, какой образ выбран, как:

UITapGestureRecognizer *tapGesture=[[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(imageTouched)]; 
[yourImageView addGestureRecognizer:tapGesture]; 

и

-(void)imageTouched{ 
    NSLog(@"Image 1 Clicked"); 
} 

Сделайте то же самое для второго изображения .... . !!

+0

Не могу ли я сделать это в 'didSelectRowAtIndexPath'? – Illep

+0

no man 'didSelectRowAtIndexPath' - это делегат для просмотра таблиц, поэтому он будет работать только тогда, когда выберете ячейку. –

0

Вы можете добавить водопроводную жест распознаватель на каждом изображении, создавая ячейки в

UITapGestureRecognizer *tap = nil; 
    tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleTapOnImageA:)]; 
    [cell.imageViewA addGestureRecognizer:tap]; 
    [tap release]; 

    tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleTapOnImageB:)]; 
    [cell.imageViewB addGestureRecognizer:tap]; 
    [tap release]; 

и осуществить жест события для каждого изображения как-

- (void) handleTapOnImageA:(UITapGestureRecognizer *) recognizer { 
     if(recognizer.state == UIGestureRecognizerStateEnded) 
     { 
      NSLog(@"Image A Touched"); 
     } 
    } 

- (void) handleTapOnImageB:(UITapGestureRecognizer *) recognizer { 
     if(recognizer.state == UIGestureRecognizerStateEnded) 
     { 
      NSLog(@"Image B Touched"); 
     } 
    } 
+0

Зачем вам нужно «Местоположение»? – iphonic

+0

благодарит сэра за то, что он просмотрел мой код и указал на необходимость местоположения, да там не было необходимости в доступе к нему. –

Смежные вопросы