美文网首页iOS干货
iOS-三种禁止点击子视图的时候不响应父视图的点击事件的方法

iOS-三种禁止点击子视图的时候不响应父视图的点击事件的方法

作者: Simple_Code | 来源:发表于2018-07-19 15:24 被阅读137次

    案例说明:点击下图子控件,会触发父控件的点击事件

    WechatIMG25623.jpeg
    解决方法1:
    给子控件添加空事件、或者子控件实例为UIButton,添加空事件
    
    解决方法2:事件拦截
     tap.delegate = self;
    
    #pragma mark - UIGestureRecognizerDelegate
    - (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch{
        // self.contentView为子控件
        if ([touch.view isDescendantOfView:self.contentView]) {
            return NO;
        }
        return YES;
    }
    
    解决方法3:控制点击区域 使用RAC手势为例
        UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc]init];
        tap.delegate = self;
        [self addGestureRecognizer:tap];
        @weakify(self);
        [[tap rac_gestureSignal] subscribeNext:^(UITapGestureRecognizer *tap) {
            @strongify(self);
            if(CGRectContainsPoint(self.frame, [tap locationInView:self.contentView])) {
                // 相当于点击了子控件
            } else{
                // 相当于点击了父控件
            };
        }];
    

    相关文章

      网友评论

        本文标题:iOS-三种禁止点击子视图的时候不响应父视图的点击事件的方法

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