美文网首页
iOS子view不继承父view的响应

iOS子view不继承父view的响应

作者: MichealXXX | 来源:发表于2018-07-25 18:18 被阅读0次
现在很多时候我们都需要通过给view添加UITapGestureRecognizer来实现交互,但是如果在这个view上添加了子view也会自动继承手势,如果我们不希望子view继承父view的事件响应这时候就需要通过UITapGestureRecognizer的代理方法来实现了。
首先我们用代码创建一个view并且给它添加一个手势
    UIView *firstView = [[UIView alloc] init];
    firstView.userInteractionEnabled = YES;
    [self.view addSubview:firstView];
    
    UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(TapAction)];
    //记得添加代理
    tap.delegate = self;
    [firstView addGestureRecognizer:tap];
在firstView上再次添加一个view,叫做secondView好了
    UIView * secondView = [[UIView alloc] init];
    secondView.userInteractionEnabled = YES;
    [firstView addSubview: secondView];
然后在interface中声明代理
<UIGestureRecognizerDelegate>
实现其代理方法
#pragma mark - UIGestureRecognizerDelegate

- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch{
    if ([touch.view isDescendantOfView: secondView]) {
        return NO;
    }
    return YES;
}
根据这个方法名我们即可知道这个代理方法用于判断子view是否应该继承响应,如果是secondView则不继承响应,这样我们点击子view便不会响应父view的事件了。

相关文章

网友评论

      本文标题:iOS子view不继承父view的响应

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