1霸奕、觸摸屏幕產(chǎn)生觸摸事件
觸摸屏幕產(chǎn)生觸摸事件后,觸摸事件會被添加到由UIApplication管理的事件隊列中(之所以不是棧是因為棧是先進(jìn)后出而隊列是先進(jìn)先出)
2质帅、事件傳遞
2.1合武、UIApplication從事件隊列中取出最前的事件傳遞給keyWindow
2.2涡扼、keyWindow在視圖層次結(jié)構(gòu)尋找最適合響應(yīng)的視圖來處理事件
2.3盟庞、最合適的view會調(diào)用自己的touches方法處理事件
備注:事件傳遞通過hitTest進(jìn)行,可以在hitTest方法中處理什猖,是超出父視圖frame的視圖響應(yīng)事件
3、事件響應(yīng)
3.1降铸、如果最適合的view能夠響應(yīng)事件,則響應(yīng)事件推掸,否則將事件傳遞給給上級視圖驻仅。
3.2、如果上級視圖不能響應(yīng)噪服,繼續(xù)向上級視圖傳遞。一直傳遞到ViewController粘优,如果ViewController的view不能響應(yīng)事件,則繼續(xù)傳遞給父控制器的view雹顺,一直傳遞到window,如果Window不能響應(yīng)則傳遞給UIApplication,如果application還是不能響應(yīng)則丟棄該事件嬉愧。
3.3、在事件響應(yīng)中如果視圖實現(xiàn)了touches則響應(yīng)英染,否則調(diào)用supertouches向上傳遞
總結(jié)
事件的傳遞是從上到下(父控件到子控件),事件的響應(yīng)是從下到上(順著響應(yīng)者鏈條向上傳遞:子控件到父控件四康。