最近看了一篇iOS的響應(yīng)鏈的文章踪旷,頗覺受益。分享剛到朋友圈給同事看過之后豁辉,同事問了我?guī)讉€問題令野。我就發(fā)現(xiàn),我每次看別人的帖子徽级,覺得好像理解了气破。你要是再仔細問我,我也說不出所以然來餐抢。先整理一點東西吧堵幽,方便自己理解和以后查找 Responder Chain(ios事件傳遞)
我先把問題貼出來:
1、為什么觸摸事件是由Application產(chǎn)生弹澎,然后分發(fā),而不是直接觸摸誰努咐,誰響應(yīng)苦蒿?
2、事件沖突是怎么產(chǎn)生的渗稍,能否復(fù)現(xiàn)佩迟?
3团滥、通過Application的層級可以找到當(dāng)前在終端顯示的view,那么自己可否也通過代碼實現(xiàn)报强?
關(guān)于問題1灸姊,
UIResponder中的默認實現(xiàn)是什么都不做,但UIKit中UIResponder的直接子類(UIView,UIViewController…)的默認實現(xiàn)是將事件沿著responder chain繼續(xù)向上傳遞到下一個responder,即nextResponder秉溉。? 因為UIApplication 是當(dāng)前app的最底層力惯,默認的第一響應(yīng)者, 所以由UIApplication進行事件分發(fā)召嘶。
關(guān)于問題2父晶,
沖突 產(chǎn)生的原因在于? 同一種手勢 在父類 和子類都存在 那么響應(yīng)的時候 就會出現(xiàn)沖突? 是可以復(fù)現(xiàn)的
關(guān)于問題3,