不接收觸摸事件的三種情況:
1.userInteractionEnable = No。
2.目標被隱藏。
3.alpha = 0.0 ~0.01。
注意:
1.父控件不能接收事件時子控件也無法接收事件。
2.UIImageView的userInteractionEnable默認就是No所以他跟子控件默認不能接收事件,創建的時候需要注意修改。
3.當一個控件隱藏的時候他的子控件也會隱藏,當一個控件設為透明時他的子控件也會被設為透明。所以當沒修改某控件的隱藏狀態或者alpha值此控件卻無法接收事件時,注意是否為父控件設置了這些數值。
如何選擇合適的控件去處理事件:
1.自己能否接收事件?
2.觸摸點是否在自己身上?
按照這兩個原則去從后往前遍歷自己的子控件并且重復前兩步,直到找到最適合的。如果沒有符合條件的子控件那么自己就是最適合的處理觸摸事件的控件。
觸摸事件被處理的過程:
1.將事件對象由上往下傳遞找到最合適的控件來處理事件。
2.調用最合適控件的touches方法。
3.如果調用了[super touches]方法那么就會將事件順著響應者鏈條逐步往上傳遞。
4.調用上一個響應者的touches方法。
如果當前view是控制器的view那么他的上一個響應者就應該是控制器,如果不是控制器的view那么上一個響應者是父控件。
注意:當使用pan手勢的時候別忘記復位,要不然偏移量會逐漸疊加。