ios 事件處理
? ? 先要找到合適的view來(lái)處理事件,找view的過(guò)程為先通過(guò)hitTest 判斷當(dāng)前的view能否相應(yīng)事件,透明度,hidden如果這些條件都滿足 在通過(guò)pointInside方法判斷這個(gè)點(diǎn)在不在這個(gè)view上,在的話 在遍歷這個(gè)view的subView ,后進(jìn)先判斷的原則查找最合適的子view 一直找下去,直到找到最合適的view為止. 找到 ?合適的view之后才會(huì) 調(diào)用touch方法,從合適的touch方法將會(huì)從合適的view一層一層往上傳遞,最后傳到Appdelegate丑勤。 ? 注意:先執(zhí)行hitTest方法在調(diào)用pointinside方法判斷是否在里面刹淌。
UIRespond和響應(yīng)鏈,首先會(huì)通過(guò)hitTest和pointinside方法找到最合適的view如果這個(gè)view能響應(yīng)事件則處理,不能則通過(guò)nextRespond屬性傳遞給下一個(gè)響應(yīng)者最后的響應(yīng)者為Appdelegate计技。
?單手勢(shì):當(dāng)給view添加手勢(shì)后,還是會(huì)通過(guò)上面的步驟來(lái)查找合適的view,默認(rèn)情況下先執(zhí)行的是手勢(shì)的touch事件(begin等),在執(zhí)行view的touch事件,手勢(shì)識(shí)別出來(lái)后執(zhí)行手勢(shì)的action,然后執(zhí)行view的touch(cancel)取消方法,默認(rèn)手勢(shì)的cancelsTouchesInView屬性(識(shí)別手勢(shì)之后,是否取消view的touch事件)是YES,手勢(shì)還有一個(gè)屬性delaysTouchesBegan(是否延遲view的touch事件識(shí)別;如果延遲了,那么手勢(shì)也識(shí)別了,那么放棄touch事件)相當(dāng)于不執(zhí)行view的touch事件芥炭。view和它的superView的手勢(shì)都能響應(yīng)。
自定義的手勢(shì)和btn都實(shí)現(xiàn)touch的幾個(gè)方法來(lái)研究系統(tǒng)的原理恃慧。
手勢(shì)的種類,和btn事件怎么分辨出來(lái):根據(jù)手勢(shì),和btn自己的touch四個(gè)方法來(lái)辨別出來(lái)园蝠。
uibutton:上的事件也是會(huì)先找到合適的view然后執(zhí)行touch方法(判定事件的種類) 在執(zhí)行btn的action方法