- 設(shè)備將touch到的UITouch和UIEvent對(duì)象打包, 放到當(dāng)前活動(dòng)的Application的事件隊(duì)列中
- 單例的UIApplication會(huì)從事件隊(duì)列中取出觸摸事件并傳遞給單例UIWindow
- UIWindow使用hitTest:withEvent:方法查找touch操作的所在的視圖view
hitTest:withEvent是如何找到對(duì)應(yīng)的View?
1.首先調(diào)用當(dāng)前視圖的pointInside:withEvent:方法判斷觸摸點(diǎn)是否在當(dāng)前視圖內(nèi);
2.若返回NO,則hitTest:withEvent:返回nil;
3.若返回YES,則向當(dāng)前視圖的所有子視圖發(fā)送hitTest:withEvent:消息,(所有子視圖的遍歷順序是從top到bottom,即從subviews數(shù)組 的末尾向前遍歷,直到有子視圖返回非空對(duì)象或者全部子視圖遍歷完畢);
4.若第一次有子視圖返回非空對(duì)象,則hitTest:withEvent:方法返回此對(duì)象,處理結(jié)束;
5.如所有子視圖都返回非,則hitTest:withEvent:方法返回自身(self)。