Попробуйте использовать другой распознаватель жестов для представления с другим селектором
UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(tappedOnBubble)];
[self.bubbleView addGestureRecognizer:tap];
UITapGestureRecognizer *tap2 = [[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(tappedOnMainView)];
[self.view addGestureRecognizer:tap2];
-(void)tappedOnMainView
{
NSLog(@"touched on main View");
[self.vwToShow setHidden:NO];
}
-(void)tappedOnView
{
NSLog(@"tapped on slider");
[self.vwToShow setHidden:YES];
}
UIView наследует от UIResponder, и базовые c события касания обнаруживаются представлением, которое запускает события касания и начала. Подвиды, которые вы добавили в главное представление, также отвечают методу начала штрихов. Это очень просто c. Вы также добавили метод выбора с распознаванием жестов касания.
Если вы все еще хотите использовать touchBegan, я думаю, вы должны сделать что-то вроде этого:
- (void)touchesBegan:(NSSet*)touches withEvent:(UIEvent *)event
{
if(theTouchLocation is inside your bubble)
{
do something with the touch
}
else
{
//send the touch to the next view in the hierarchy ( your large view )
[super touchesBegan:touches withEvent:event];
[[self nextResponder] touchesBegan:touches withEvent:event];
}
}