美文网首页
iOS事件的传递

iOS事件的传递

作者: heartNewStart | 来源:发表于2017-07-14 10:07 被阅读0次

    事件的传递

    1、点击View产生一个触摸事件,这个事件会被添加到UIApplication管理的队列中。

    2、当UIApplication从队列中取出此触摸事件时会把它传给应用程序的主窗口。

    3、窗口会在视图层次结构中找到一个最合适的视图来处理触摸事件。


    *找到最合适视图的过程:1> 首先判断主窗口自己是否能接收触摸事件,然后再判断触摸点是否在自己身上。</br>2、如果触摸点在窗口身上,那么窗口就会从后向前的遍历自己的子控件。</br>3、遍历子控件的过程就是每个子控件重复上面的两个步骤,如此循环直到找到最合适的view。</br>4、找到最合适的view就会调用其touches方法来处理事件。之所以采用由后向前的遍历方式只是为了降低循环次数</br>
    *寻找最合适view的底层剖析:只要事件一传递给控件,控件就会调用他自身的hitTest:withEvent方法(首先调用当前控件的pointInside:withEvent:方法判断触摸点是否在当前视图内,若返回NO,则hitTest:withEvent返回nil;若返回YES,则向当前视图的所有子视图发送hitTest:withEvent:消息,直到有子视图返回非空对象)

    相关文章

      网友评论

          本文标题:iOS事件的传递

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