iOS子视图屏蔽父视图手势

这几天在同事代码上改点东西,增加了一个弹框,弹框是一个密码输入页面,如下图


弹框页面

该页面我未添加任何手势,可当点击背景时键盘收起了!需求是不要求键盘收起;
检查发现父view上添加了点击关闭键盘手势;
由于弹框加父视图上,所以也响应了父视图手势。

- (void)keyboardDown
{
    [self.view endEditing:YES];
}

很显然这种情况应该屏蔽父视图手势,方法很简单,在手势的代理方法里做个限制就行;

#pragma mark - UIGestureRecognizerDelegate
-(BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch
{
    if ([touch.view isDescendantOfView:self.viewWalletPay]) {//屏蔽父视图在子视图手势
        return NO;
    }

    return YES;
}

注意self.viewWalletPay是弹框对象,上面判断的意思是:添加在子视图对象上的控件屏蔽手势,满足需求。

子视图会响应父视图的手势,添加手势要注意对其他视图的影响,避免产生不必要的bug

你可能感兴趣的:(iOS子视图屏蔽父视图手势)