博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
当button按钮的超出父视图的frame的时候如何响应事件(响应者链条的应用)
阅读量:2094 次
发布时间:2019-04-29

本文共 681 字,大约阅读时间需要 2 分钟。

自定义一个继承自UIView的子类

重写子类的hit-test

#import "TestView.h"

@implementation TestView

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

    UIView *view = [super hitTest:point   withEvent:event];

    

    if (!view) {

        

        if (self.subviews.count > 0) {

            

            for (UIView *v in self.subviews) {

                

                CGPoint tempPoi = [v convertPoint:point   fromView:self];

                

                if (CGRectContainsPoint(v.bounds, tempPoi)) {

                    view = v;

                    break;

                }

            }

        }

    }

    return view;

}

@end

说一下[v convertPoint:point   fromView:self];这句代码的含义

首先上面代码hit-test方法中的point通过打印可以知道是  对于浅蓝色的自定义view而言的

其次这句代码做的事是:把self上面的点转换到红色button上的点,即转换完毕之后点的x,y是相对于红色button的左上角而言的

举个例子:比如当点击button的时候,point是 (x:19,y:131)转换完毕tempPoi是(x:19,y:31)(注:浅蓝色view宽高均为100,红色button宽高均为50)

你可能感兴趣的文章
Intellij IDEA使用(四)—— 使用Intellij IDEA创建静态的web(HTML)项目
查看>>
Intellij IDEA使用(五)—— Intellij IDEA在使用中的一些其他常用功能或常用配置收集
查看>>
Intellij IDEA使用(六)—— 使用Intellij IDEA创建Java项目并配置jar包
查看>>
Eclipse使用(十)—— 使用Eclipse创建简单的Maven Java项目
查看>>
Eclipse使用(十一)—— 使用Eclipse创建简单的Maven JavaWeb项目
查看>>
Intellij IDEA使用(十三)—— 在Intellij IDEA中配置Maven
查看>>
面试题 —— 关于main方法的十个面试题
查看>>
集成测试(一)—— 使用PHP页面请求Spring项目的Java接口数据
查看>>
使用Maven构建的简单的单模块SSM项目
查看>>
Intellij IDEA使用(十四)—— 在IDEA中创建包(package)的问题
查看>>
FastDFS集群架构配置搭建(转载)
查看>>
HTM+CSS实现立方体图片旋转展示效果
查看>>
FFmpeg 命令操作音视频
查看>>
问题:Opencv(3.1.0/3.4)找不到 /opencv2/gpu/gpu.hpp 问题
查看>>
目的:使用CUDA环境变量CUDA_VISIBLE_DEVICES来限定CUDA程序所能使用的GPU设备
查看>>
问题:Mysql中字段类型为text的值, java使用selectByExample查询为null
查看>>
程序员--学习之路--技巧
查看>>
解决问题之 MySQL慢查询日志设置
查看>>
contOS6 部署 lnmp、FTP、composer、ThinkPHP5、docker详细步骤
查看>>
TP5.1模板布局中遇到的坑,配置完不生效解决办法
查看>>