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

事件传递和响应机制

作者: 李波小丑 | 来源:发表于2017-02-22 18:09 被阅读0次

    UIResponder

    只有继承了UIResponder的类才能接受并处理事件

    1.发生触摸事件后,系统会将该事件加入到一个由UIApplication管理的事件队列中
    2.UIApplication会从事件队列中取出最前面的,发送给主窗口 keyWindow
    3.主窗口会在视图层次结构中找到一个最合适的视图来处理触摸事件

    命中测试

    如何找到最合适的view,ios使用命中测试去寻找触摸发生下的view。命中测试会判断该触摸点发生在某个具体的view的相对边界之内。如果检测是,就递归检测该view的所有子view。直到层级最低端view包含触摸点,它就成了”命中测试view“
    hitTest:withEvent 传入CGPoint和UIEvent返回命中测试view。其内部调用pointInside:withEvent判断触摸点是否在view上
    命中测试view被赋予第一个处理触摸事件的机会,如果命中测试view不能处理该事件,该事件就会交付给view响应链的上一级处理知道系统找到一个能处理该事件的对象。

    touch.png

    UIView不能接受触摸事件的三种情况

    1. userInteractionEnabled = NO
    2. 隐藏
    3. 透明度

    相关文章

      网友评论

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

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