在iOS中不是任何對象都能處理時間,只有繼承了UIResponder的對象才能接收并處理事件。我們稱之為“響應者對象”
UIApplication UIViewController UIView都是繼承自UIResponder,因此他們都是響應者對象,都能夠接收并處理事件。
UIResponder內部提供了以下方法來處理事件
UIView的響應者鏈條
UIView不接收觸摸事件的三種情況
----------------------------------------------------------------------
1.不接收用戶交互uerInteractionEnable = NO
2.隱藏hidden = YES
3.透明alpha = 0.0~0.01
提示:UIImageView的UserInteractionEnabled默認就是NO,因此UIImageView以及它的子空間默認是不能接收觸摸事件的。
事件的完整處理過程:
1.先將事件對象由上往下傳遞(由父控件傳遞給子控件),找到最合適的空間來處理這個事情
2.調用最合適空間的touches......方法
3.如果調用了[super touches......];就會將事件順著響應者鏈條往上傳遞,傳遞給上一個響應者
4.接著就會調用上一個相應者的touches......方法
什么是響應者鏈條?
1.響應者鏈條是由多個響應者對象鏈接起來的鏈條(什么是響應者對象:能處理時間的對象)
2.利用響應者鏈條,能讓多個控件處理同一個觸摸事件
3.怎么利用鏈條往上傳遞,誰是上一個響應者
誰是上一個響應者:
1.如果當前這個view的是控制器的view,那么控制器就是上一個響應者
2.如果當前這個view不是控制器的view,那么父控件就是上一個響應者