美文网首页
iOS事件机制

iOS事件机制

作者: 路在脚下了 | 来源:发表于2020-09-17 16:37 被阅读0次

iOS事件可以分为3种:

  • Touch Events(触摸事件)
  • Motion Events(运动事件)
  • Remote Events(远程事件,比如用耳机按键控制手机)

下面主要说的是Touch Events(触摸事件),事件整个过程可以分为两个过程:

  1. 传递:是当我们触摸屏幕时,为我们找出最适合的View
  2. 响应:当我们找出最适合的View后,此时找到的View并不一定是最适合响应此事件的View,所以需要继续找出能响应此次触摸事件的View。

下图是通过这两个方法寻找最适合的View

func hitTest(_ point: CGPoint, with event: UIEvent?) -> UIView? 
func point(inside point: CGPoint, with event: UIEvent?) -> Bool 
hitTest检测.png

下图是遍历subViews时,是倒叙遍历的,如果找到最适合View时,那么为遍历到的subView不会继续遍历。

检测点击View.png

下图是事件响应阶段,响应链。传递阶段与之相反。


事件传递.png

在事件响应过程中,找到最适合的View时,会先判断view.gestureRecognizers属性是否为空,如果不为空,直接响应手势,响应链结束。为空时,判断touches began moved end cancel 四个方法有无实现,如果实现了,那么响应链结束,实现这四个方法。
UIControl之所以可以直接响应事件,是因为它默认实现了touches began moved end cancel 四个方法。

相关文章

网友评论

      本文标题:iOS事件机制

      本文链接:https://www.haomeiwen.com/subject/bbolyktx.html