美文网首页
封装UIView添加UIButton事件无响应

封装UIView添加UIButton事件无响应

作者: WeeverLu | 来源:发表于2018-08-05 17:22 被阅读70次

参考文章:iOS hitTest

自定义封装了UIView,发现内部的

  • UIButton不响应 addTarget:action:forControlEvents:事件;
  • UIImageView开了userInteractionEnabled,加了UITapGestureRecognizer也不响应。

知道是事件传递响应问题,找到了参考文章,根据文章内容重写了

- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event

在封装的View中实现

- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event {
    //需要点击的View(UIImageView-开触摸, UIButton等)
    NSArray *tapViews = @[ view1, view2 ];
    for (UIView *tapView in tapViews) {
        //将当前View的触摸点转换坐标系,转换到tapView的身上,生成一个新的点
        CGPoint newPoint = [self convertPoint:point toView:tapView];
        //判断如果这个新的点是在tapView身上,那么处理点击事件最合适的view就是tapView
        if ([tapView pointInside:newPoint withEvent:event]) {
            return tapView;
        }
    }
    
    return [super hitTest:point withEvent:event];
}

相关文章

网友评论

      本文标题:封装UIView添加UIButton事件无响应

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