美文网首页iOS开发
iOS子视图屏蔽父视图手势

iOS子视图屏蔽父视图手势

作者: 智人一千 | 来源:发表于2019-10-25 11:47 被阅读0次

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


    弹框页面

    该页面我未添加任何手势,可当点击背景时键盘收起了!需求是不要求键盘收起;
    检查发现父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子视图屏蔽父视图手势

        本文链接:https://www.haomeiwen.com/subject/usksvctx.html