点击事件穿透效果

具体效果图:

  • 未点击时的效果图:


    未点击.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];
    }
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 176,267评论 25 709
  • ¥开启¥ 【iAPP实现进入界面执行逐一显】 〖2017-08-25 15:22:14〗 《//首先开一个线程,因...
    小菜c阅读 11,872评论 0 17
  • 我是日记星球273号星宝宝,我正在参加日记星球21天蜕变之旅,这是我的第十四篇原创日记。 今天我们谈谈一本非常重要...
    心缘育儿阅读 2,144评论 2 4
  • 平淡生活学着过得有意义。
    妮妮liu阅读 1,373评论 0 0
  • < 第1章 > 鞭炮声,喝彩声,此起彼伏,连绵不断,响彻在整个城堡上空。 今天是莉拉公主的10岁生日,所有人都为之...
    安图羊说书阅读 4,095评论 0 4

友情链接更多精彩内容