美文网首页
点击事件穿透效果

点击事件穿透效果

作者: 伯wen | 来源:发表于2016-11-09 11:14 被阅读384次

具体效果图:

  • 未点击时的效果图:


    未点击.png
  • 点击橘黄色view上非按钮点击部分的效果图:


    点击非按钮部分.png
  • 点击橘黄色view上非按钮点击部分时, 控制台打印效果图:


    点击非按钮部分的控制台打印.png
  • 点击橘黄色上按钮的部分时, 点击事件穿透到按钮上, 效果图如下:


    点击按钮部分, 事件穿透.png

具体代码实现如下:

  • LTView就是自定义的橘黄色view控件
  • 此处btn是通过先创建代码, 反向拉线的方式连接
// view触摸事件
- (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event
{
    NSLog(@"%s", __func__);
}

/**
 返回响应事件的控件

 @param point 触摸点 在当前方法调用者自身坐标系上的位置
 @param event 触摸事件

 @return 响应点击事件的控件, nil: 自身及自身子控件都不是响应者, self: 自身是响应者
 */
- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event
{
    //转移坐标系, 将point的坐标从橘黄色view上转移到按钮上
    CGPoint btnPoint = [self convertPoint:point toView:self.btn];
    
    //判断点是否在按钮上
    if ([self.btn pointInside:btnPoint withEvent:event]) {
        return self.btn;
    }else {
        return [super hitTest:point withEvent:event];
    }
}

相关文章

网友评论

      本文标题:点击事件穿透效果

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