在一個(gè)app中間有一個(gè)button,在你手觸摸屏幕點(diǎn)擊后,到這個(gè)button收到點(diǎn)擊事件,中間發(fā)生了什么

  1. 設(shè)備將touch到的UITouch和UIEvent對(duì)象打包, 放到當(dāng)前活動(dòng)的Application的事件隊(duì)列中
  2. 單例的UIApplication會(huì)從事件隊(duì)列中取出觸摸事件并傳遞給單例UIWindow
  3. 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)。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容