美文网首页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