八点钟学院学习记录
1、像起点中文网,和今日头条有些模块,仅当列表停止滚动的时候才加载图片。可以使用self perform..onMode方法,仅当scrollView处于default模式下才去下载图片。也可以监听scrollview的滚动事件,当滚动停止才去加载图片
- 事件
事件包括事件传递和事件响应
1.发生触摸事件后,系统会将该事件加入到一个由UIApplication管理的队列事件中
2.UIApplication会从事件队列中取出最前面的事件,并将事件分发下去以便处理,通常会先发送事件给应用程序的主窗口(keyWindow)
3.主窗口会在视图层次结构中找到一个最合适的视图来处理触摸事件
事件传递:runloop监听source1事件。用户触发事件IO,包装事件,添加到UIApplication管理的队列事件中。UIApplication会从事件队列中取出最前面的事件,并将事件分发下去以便处理,通常会先发送事件给应用程序的主窗口(keyWindow),再反向遍历子视图,通过hittest和pointinside找出最佳响应的视图A,完成事件传递工作。举例,keyWindow依次添加了A,B,C三个子视图,C又依次添加了D,E,F子视图,F上的点击事件查找流程是,反向遍历keyWindow子视图,也就是C,B,A遍历,通过方法hittest找到响应的视图C,再反向遍历C的子视图F,E,D,hittest找出了视图F,再遍历F的子视图,发现F没有子视图,hittest返回的就是F自身,于是找出最佳响应视图F,也就是第一响应者。
事件响应:事件是沿着响应者链向上传递的。最初第一响应者响应,若未处理则依次向上传递。由视图A不断向上响应事件,路径顺序是A有父视图就传给父视图,没有就传给A的控制器B,B存在父视图就给父视图,否则也是给控制器C,C最后传给uiwindow再给uiapplication。事件回调都是touchbegin,touchend那几个方法。手势(uitapgesture等)时要注意,一旦手势被识别(在touchbegin...等方法中识别)会中断touch等方法继续调用,以及向上传递,想保留需要设置额外属性delaysTouchBegan,cancelsTouchesInView
uibutton,手势等事件,都是按照上面的两部完成交互。先是通过事件传递查找到响应视图,再依次响应。控制传递过程中的响应方法,可以截停事件响应,或转移响应目标
http://www.cocoachina.com/ios/20190220/26383.html