不接收触摸事件的三种情况:
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手势的时候别忘记复位,要不然偏移量会逐渐叠加。