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

UIEvent 传入 -[UIView hitTest:]

您好!您提到的 UIEvent 是一个 iOS 和 macOS 中的类,它是事件处理的基础。UIEvent 是 UIResponder 类的一个子类,它主要用于处理触摸事件、键盘事件和其他类型的事件。

在 UIKit 框架中,当用户与应用程序的用户界面元素交互时,系统会生成一个 UIEvent 对象。这个对象包含了与交互相关的所有信息,例如触摸的位置、触摸的时间等等。然后,UIKit 会将这个 UIEvent 对象传递给视图层次结构中的合适的视图,以便视图可以响应用户的交互。

在视图层次结构中,视图可以通过重写 hitTest:withEvent: 方法来确定哪个视图应该响应 UIEvent。在这个方法中,视图可以检查 UIEvent 对象中的信息,例如触摸的位置,来确定哪个子视图应该响应事件。如果子视图可以响应事件,则该方法应该返回该子视图;否则,该方法应该返回 nil。

总之,UIEvent 是 iOS 和 macOS 中处理用户交互事件的基础,它可以帮助开发者更好地理解用户的行为,并根据用户的行为来响应事件。

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

相关·内容

  • 史上最详细的iOS之事件的传递和响应机制-实践篇

    之前我已经通过《史上最详细的iOS之事件的传递和响应机制-原理篇》比较详细的介绍过了事件的响应和传递的一些原理。如果说上篇是原理性文章,那么本篇文章更偏重于实践。本篇文章主要介绍如何利用事件处理的这些机制来处理公司开发中一些比较棘手的需求。例如,点击的是A视图,却要让B视图处理事件;点击子视图,却要让父视图处理事件等等。今天,我整理了下之前的杂记,罗列出了一些开发中可能遇到的情景和应对措施!当然,这要求我们对事件的传递和响应机制非常了解。如果对此不太了解,请阅读笔者的《史上最详细的iOS之事件的传递和响应机制-原理篇》。

    02

    Event官方文档

    当系统传递一个touch event,首先会send到一个特定的view。对于touch view来讲,这个view就是被hitTest:withEvent:返回的view;对于shaking-motion event,remote-control事件,action messages,和editing-menu message, view就是firstResponder。如果initial view没有处理event,他就会沿着响应链去查找,顺序为: a) hit-test view或者firstResponder会传递event或者message到它的vc上(如果有的话);如果没有vc,则将event或者message传到superView上 b) 如果view或者vc不能handle event或者message,会传到view的superview上。 c) 之后的所有superView会根据a、b的模式进行传输,如果无法handle的话 d) view树的最上层的view,如果无法handle event或者message,会把event send到window对象 e) 如果UIWindow对象无法handle的话,会传递到application对象单例上 f) 如果application单例无法处理event或者message,则discards。

    02
    领券