如何在触摸手势事件时检查其父视图或子视图?

时间:2016-10-01 05:37:05

标签: ios objective-c uiview uitapgesturerecognizer

我有两个观点。一个是包含子视图的透明视图。我想仅在单击父视图时删除popUpView。当我点击screenView = [[UIView alloc]initWithFrame:CGRectMake(0, 0, SCREEN_WIDTH, SCREEN_HEIGHT)]; screenView.backgroundColor = [UIColor clearColor]; UITapGestureRecognizer * clearTable = [[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(clearTableViewAction:)]; [clearTable setNumberOfTapsRequired:1]; [screenView setUserInteractionEnabled:YES]; [screenView addGestureRecognizer:clearTable]; screenView.tag = 100; [self.view addSubview:screenView]; self.popUpView = [[UIView alloc]init]; self.popUpView.frame = ... self.popUpView.backgroundColor = WhiteColor; self.popUpView.userInteractionEnabled = YES; self.popUpView.tag = 200; [screenView addSubview:self.popUpView]; -(void)clearTableViewAction:(UITapGestureRecognizer*)sender { if(sender.view.tag == 100){ [UIView animateWithDuration:0.2 animations:^{screenView.alpha = 0.0;} completion:^(BOOL finished){ [screenView removeFromSuperview]; }]; } } 时,我不想调用tapGesture。怎么检查?

{{1}}

1 个答案:

答案 0 :(得分:1)

使用shouldReceiveTouch委托方法并检查:

像,

- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch 
{
    if ([touch.view.tag == 100) 
    {
        return YES;
    }
    else 
    {
        return NO; 
    }
}

现在,如果您点击clearTableViewAction,则不会调用popUpView手势方法。