1

On my UIViewController I have different UIViews, and some of them are my custom UIViews. How to know which UIView was touched, my custom or not ??

Jim
  • 8,874
  • 16
  • 68
  • 125

2 Answers2

2

You can set tag to each of your view.

view1.tag = y;
UITapGestureRecognizer *tapGesture = 
    [[UITapGestureRecognizer alloc] initWithTarget:self 
                                            action:@selector(singleTapGestureCaptured:)];
tapGesture.numberOfTapsRequired = 1;
[view1 addGestureRecognizer:tapGesture];

and in singleTapGestureCaptured method:

- (void)singleTapGestureCaptured:(UITapGestureRecognizer *)gesture
{ 
    [[gesture view] tag];
    NSLog(@"tap captured for view :%d", [[gesture view] tag]);
}
coverback
  • 4,413
  • 1
  • 19
  • 31
Abdullah Md. Zubair
  • 3,312
  • 2
  • 30
  • 39
1

You can create two UIGestureRecognizers then you have to associate the gesture recognizer with your views like this:

UITapGestureRecognizer * recognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleTap:)];
[view addGestureRecognizer:recognizer];

UITapGestureRecognizer * recognizerCustom = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleTapCustom:)];
[customView addGestureRecognizer:recognizer];

This way you know when the handleTap: method is called your normal view was touched and when your handleTapCustom: gets called your custom view was called.

Oscar Gomez
  • 18,436
  • 13
  • 85
  • 118