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

IOS事件传递和响应

作者: 忧郁男生 | 来源:发表于2017-08-03 22:19 被阅读0次

    1、触摸屏幕产生触摸事件

    触摸屏幕产生触摸事件后,触摸事件会被添加到由UIApplication管理的事件队列中(之所以不是栈是因为栈是先进后出而队列是先进先出)

    2、事件传递

    2.1、UIApplication从事件队列中取出最前的事件传递给keyWindow

    2.2、keyWindow在视图层次结构寻找最适合响应的视图来处理事件

    2.3、最合适的view会调用自己的touches方法处理事件

    备注:事件传递通过hitTest进行,可以在hitTest方法中处理,是超出父视图frame的视图响应事件

    3、事件响应

    3.1、如果最适合的view能够响应事件,则响应事件,否则将事件传递给给上级视图。

    3.2、如果上级视图不能响应,继续向上级视图传递。一直传递到ViewController,如果ViewController的view不能响应事件,则继续传递给父控制器的view,一直传递到window,如果Window不能响应则传递给UIApplication,如果application还是不能响应则丢弃该事件。

    3.3、在事件响应中如果视图实现了touches则响应,否则调用supertouches向上传递

    总结

    事件的传递是从上到下(父控件到子控件),事件的响应是从下到上(顺着响应者链条向上传递:子控件到父控件。

    相关文章

      网友评论

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

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