首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

UIView的-hitTest:withEvent:调用了三次?

UIView的-hitTest:withEvent:方法是用于处理触摸事件的方法。当用户点击屏幕上的某个区域时,系统会将该事件传递给应用程序,并通过-hitTest:withEvent:方法来确定哪个视图应该处理该事件。

-hitTest:withEvent:方法会被调用多次的原因是为了确定事件的最终响应者。具体来说,当用户点击屏幕时,系统会从最上层的视图开始,逐级向下遍历视图层级,直到找到最合适的响应者为止。在这个过程中,-hitTest:withEvent:方法会被每个视图依次调用,以确定是否命中当前视图。

第一次调用-hitTest:withEvent:方法是从最上层的视图开始,用于确定触摸事件发生的位置是否在当前视图的范围内。如果不在范围内,则会继续向下遍历其他视图。

第二次调用-hitTest:withEvent:方法是在确定触摸事件发生在当前视图范围内后,用于确定是否有子视图需要处理该事件。如果有子视图需要处理,则会继续向下遍历子视图。

第三次调用-hitTest:withEvent:方法是在确定当前视图是最合适的响应者后,用于实际处理触摸事件。这一次调用会返回最终的响应者视图。

总结起来,-hitTest:withEvent:方法的三次调用是为了确定事件的最终响应者,并将事件传递给该视图进行处理。

腾讯云相关产品和产品介绍链接地址:

  • 云服务器(CVM):提供可扩展的计算容量,满足各种业务需求。产品介绍链接
  • 云数据库 MySQL 版(CDB):高性能、可扩展的关系型数据库服务。产品介绍链接
  • 云原生容器服务(TKE):用于快速构建、部署和管理容器化应用的托管服务。产品介绍链接
  • 人工智能平台(AI Lab):提供丰富的人工智能算法和模型,帮助开发者构建智能应用。产品介绍链接
  • 物联网开发平台(IoT Explorer):提供设备接入、数据存储、消息通信等功能,支持构建物联网应用。产品介绍链接
  • 移动推送服务(信鸽):提供消息推送、用户行为分析等功能,帮助开发者提升用户体验。产品介绍链接
  • 云存储(COS):提供安全、可靠、低成本的云端存储服务,适用于各种场景。产品介绍链接
  • 区块链服务(BCS):提供一站式区块链解决方案,帮助企业快速搭建和管理区块链网络。产品介绍链接
  • 腾讯会议:提供高清、流畅的在线会议服务,支持多人视频通话和屏幕共享。产品介绍链接

以上是腾讯云提供的一些与云计算相关的产品,可以根据具体需求选择适合的产品来支持和扩展应用。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

UI篇-UIResponder之事件传递和响应精析

每次点击发生时候,点击对象都放在一个集合中传入UIResponder方法中,我们通过集合中对象获取用户点击位置。...- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event; //判断当前点击事件是否存在最优响应者(First Responder)...我们可以重写view-(UIView )hitTest:(CGPoint)point withEvent:(UIEvent)event方法来测试 #import "UIView+MYtes.h" #import...__); return [self wcq_hitTest:point withEvent:event]; } 然后我们分别新建三个UIView子类: AView、BView、CView并依次按顺序添加到...,然后在调用hitTest: withEvent:依次获取处理这个事件所有视图对象,在获取所有的可处理事件对象后,开始调用这些对象touches回方法 在自定义View中重写 touchesBegan

2.5K30
  • ios事件-触摸事件2(手势 和 pointInSide()、hitTest()、touchesBegan()、touchesMoved()、touchesEnded()关系)

    手势和pointInSide()以及hitTest()关系:必须先通过pointInSide()和hitTest()找到view(即处理事件view),才能响应view手势事件。 2....- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event { NSLog(@"%@, %s", self.bgColorString...= 13 //识别出不是点击手势了,所以[CustomerGesture touchesMoved:withEvent:]就不会再被调用了。...NO表示手势识别出来,不cancel掉viewtouch方法 gesture.cancelsTouchesInView = NO; //只是添加了这一行代码!!!!!!!!!!...中添加了gesture.cancelsTouchesInView = NO;,即告诉系统说手势识别出来后,不要cancel掉viewtouch方法,所以RedViewtouchesMoved:

    1K20

    IOS开发系列——UIView专题之五:常用开发技巧篇

    window对象会在首先在view hierarchy顶级view上调用hitTest:withEvent:,此方法会在视图层级结构中每个视图上调用pointInside:withEvent:,如果...hitTest:withEvent:方法处理流程如下: •首先调用当前视图pointInside:withEvent:方法判断触摸点是否在当前视图内; •若返回NO,则hitTest:withEvent...【原】ioshitTest方法以及不规则区域内触摸事件处理方法 http://www.cnblogs.com/wengzilin/p/4249847.html hitTest:withEvent:...view为scrollview,button无法响应,可以修改topViewhitTest:withEvent:方法如下: - (UIView*)hitTest:(CGPoint)point withEvent...:withEvent:方法流程 http://blog.csdn.net/jiajiayouba/article/details/23447145 iOSUIViewhitTest分析 http

    1.1K20

    史上最详细iOS之事件传递和响应机制-原理篇

    ,事件都会先传递给这个控件,随后再调用hitTest:withEvent:方法 拦截事件处理 正因为hitTest:withEvent:方法可以返回最合适view,所以可以通过重写hitTest:withEvent...但是,建议在父控件hitTest:withEvent:中返回子控件作为最合适view! 原因在于在自己hitTest:withEvent:方法中返回自己有时候会出现问题。...控制器viewhitTestwithEvent:方法return nil或者windowhitTestwithEvent:方法return self return nil含义: hitTest...- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event{ UIView *view = [super hitTest:point...3、在事件响应中,如果某个控件实现了touches...方法,则这个事件将由该控件来接受,如果调用了[super touches….]

    11K70

    iOS 点击事件如何穿透透明View?

    -(id)hitTest:(CGPoint)pointwithEvent:(UIEvent *)event { UIView *hitView= [super hitTest:point withEvent...:withEvent:方法处理流程如下: 首先调用当前视图pointInside:withEvent:方法判断触摸点是否在当前视图内; 若返回NO,则hitTest:withEvent:返回nil;...若返回YES,则向当前视图所有子视图(subviews)发送hitTest:withEvent:消息,所有子视图遍历顺序是从top到bottom,即从subviews数组末尾向前遍历,直到有子视图返回非空对象或者全部子视图遍历完毕...- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event { // 1.判断当前控件能否接收事件 if (self.userInteractionEnabled...:point toView:childView]; // 寻找到最合适view UIView *fitView = [childView hitTest:childP

    4K10

    iOS 事件体系知识及原理小记

    (1)查找阶段: 先介绍UIView两个方法: - (BOOL)pointInside:(CGPoint)point withEvent:(nullable UIEvent *)event; 该方法用于检查当前坐标是否落在当前...view - (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event 该方法主要逻辑是: 检查当前view是否能响应事件(userInteractionEnabled...执行hitTest:withEvent:; 如果subViewhitTest:withEvent:有返回,则返回该返回; 如果subViewhitTest...(UIWindow); 主窗口会调用hitTest:withEvent:方法在视图(UIView)层次结构中找到一个最合适UIView来处理触摸事件,并将UITouch与UIEvent交给UIView...(2)事件响应阶段(响应链): 在上面提到查找阶段,通过hitTest:withEvent:最终查找到最后view自然就做为第一个可以响应该事件view,当该view不能处理该事件,系统会通过nextResponder

    1.2K90
    领券