IOS开发之——事件处理-hiTest(69)

2.2 何时调用

当事件传递给一个控件的时候就会调用

2.3 调用过程

  • 看窗口是否能接收,如果不能return nil;自己不能接收事件,也不能处理事件,而且也不能把事件传递给子控件

  • 判断点在不在窗口上,如果点在窗口上,意味着窗口满足合适的view

2.4 作用

寻找最合适的view

三 hiTest底层实现原理


3.1 坐标系转换关系

  • 判断点在不在方法调用者的坐标系上(point:是方法调用者的坐标系上的点)

3.2 底层实现原理

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

{

if (self.userInteractionEnabledNO||self.hiddenYES||self.alpha<=0.01) {

return nil;

}

if (![self pointInside:point withEvent:event]) {

return nil;

}

int count=self.subviews.count;

for (int i=count-1; i>=0; i–) {

UIView *childView=self.subviews[i];

//转换坐标系

CGPoint childPoint=[self convertPoint:point toView:childView];

UIView *fitView= [childView hitTest:childPoint withEvent:event];

if (fitView) {

return fitView;

}

}

return self;

}

四 hiTest练习


4.1 界面

4.2 要求

  • 界面上有一个Button,Button上方有一个GreenView布局

  • 点击Button时,Button响应请求

  • 点击Button上方的GreenView时,Button响应请求

  • 点击GreenView上的其他区域时,GreenView响应请求

4.3 代码逻辑

GreenView.h

@interface GreenView : UIView

@property (nonatomic,weak) IBOutlet UIButton *button;

@end

GreenView.m

#import “GreenView.h”

@implementation GreenView

  • (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event

{

NSLog(@“%s”,func);

总结

最后对于程序员来说,要学习的知识内容、技术有太多太多,要想不被环境淘汰就只有不断提升自己,从来都是我们去适应环境,而不是环境来适应我们!

这里附上上述的技术体系图相关的几十套腾讯、头条、阿里、美团等公司20年的面试题,把技术点整理成了视频和PDF(实际上比预期多花了不少精力),包含知识脉络 + 诸多细节,由于篇幅有限,这里以图片的形式给大家展示一部分。

相信它会给大家带来很多收获:

当程序员容易,当一个优秀的程序员是需要不断学习的,从初级程序员到高级程序员,从初级架构师到资深架构师,或者走向管理,从技术经理到技术总监,每个阶段都需要掌握不同的能力。早早确定自己的职业方向,才能在工作和能力提升中甩开同龄人。
《Android学习笔记总结+移动架构视频+大厂面试真题+项目实战源码》点击传送门,即可获取!
员到高级程序员,从初级架构师到资深架构师,或者走向管理,从技术经理到技术总监,每个阶段都需要掌握不同的能力。早早确定自己的职业方向,才能在工作和能力提升中甩开同龄人。
《Android学习笔记总结+移动架构视频+大厂面试真题+项目实战源码》点击传送门,即可获取!

  • 15
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值