今天無(wú)意間注意到了一個(gè)之前一直沒(méi)發(fā)現(xiàn)的問(wèn)題,今天和大家分享一下.
1. button 上面放 imageView,imageView 的交互沒(méi)有打開(kāi),點(diǎn)擊 imageView 能不能響應(yīng) button 的點(diǎn)擊事件呢. 按照之前的想法是button 上面蓋了一層?xùn)|西,怎么可能會(huì)響應(yīng) button 的點(diǎn)擊事件呢.但是今天就突然發(fā)現(xiàn)是可以的.
2.cell 上面放一個(gè) imageView 和一個(gè) button, 點(diǎn)擊 imageView 的時(shí)候響應(yīng) cell 的點(diǎn)擊事件,但是點(diǎn)擊 button 的時(shí)候卻沒(méi)有響應(yīng) cell 的點(diǎn)擊事件(此時(shí)是沒(méi)有實(shí)現(xiàn) button 的點(diǎn)擊事件的),這又是為什么呢
3.那么為什么 button 放在 imageView 上的時(shí)候,點(diǎn)擊 button 的時(shí)候, button 又不響應(yīng)了呢
帶著上面的問(wèn)題,我查了一些資料,和自己寫了各種情況的小 demo. 總結(jié)了一下:
1.button 上面放 imageView? 點(diǎn)擊 imageView 能響應(yīng) button 的點(diǎn)擊事件 :是因?yàn)閺南峦险?找到的 imageView 不能響應(yīng),所以就響應(yīng) imageView 的上一個(gè)響應(yīng)者. 如果 imageView 的交互打開(kāi),那么就不會(huì)響應(yīng) button 的點(diǎn)擊事件了.
2.button 放在 imageView 上面, imageView 的交互不打開(kāi), button 的點(diǎn)擊事件就不會(huì)響應(yīng) :是因?yàn)轫憫?yīng)事件向上傳遞到 imageView 的時(shí)候, imageView 的交互沒(méi)有打開(kāi),就不會(huì)傳遞到 button, 所以不會(huì)響應(yīng) button 的點(diǎn)擊事件
3.根據(jù) button 和 imageView 的實(shí)戰(zhàn)代碼總結(jié): 所有的響應(yīng)事件都遵循這樣的傳遞.
大家可以看一下圖(比較好理解一點(diǎn))