美文网首页
iOS之事件的传递和响应机制

iOS之事件的传递和响应机制

作者: 绍清_shao | 来源:发表于2020-04-20 15:34 被阅读0次

    值得参考的链接

    iOS 事件传递&响应链

    当前屏幕有一个用户事件时,系统会产生一个事件,交给当前应用的事件处理队列。

    寻找能处理事件的View

    视图会调用hitTest:withEvent:判断自己能不能处理这个事件。
    不能处理的3种情况:
    1.不允许交互:userInteractionEnabled = NO
    2.隐藏:如果把父控件隐藏,那么子控件也会隐藏,隐藏的控件不能接受事件
    3.透明度:如果设置一个控件的透明度<0.01,会直接影响子控件的透明度。alpha:0.0~0.01为透明。
    能处理的情况:
    父视图会调用子视图hitTest:withEvent:,就算事件点不在视图本身,且不会想上面3种情况下,是能处理这个事件的。并调用point(inside:with:)判断点是否在自己View上。

    子视图调用hitTest:withEvent:顺序:
    从最外层开始调用hitTest:withEvent:,如果找到了,不会再遍历本视图的hitTest:withEvent:

    处理事件

    调用touch方法,如果自身能处理,则响应事件不会继续往下传递。如果touch、中调用了super,上一个响应者会调用touch`。

    如果当前这个view是控制器的view,那么控制器就是上一个响应者
    如果当前这个view不是控制器的view,那么父控件就是上一个响应者

    相关文章

      网友评论

          本文标题:iOS之事件的传递和响应机制

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