在为应用添加手势识别功能时,需要针对特定的手势创建相应的UIGestureRecognizer子类对象,而不是直接使用UIGestureRecognizer对象。iOS SDK提供了多种能够处理不同手势的UIGestureRecognizer子类。
使用UIGestureRecognizer子类对象时,除了要设置目标-动作对,还要将该子类对象“附着”在某个视图上。当该子类对象根据当前附着的视图所发生的触摸事件识别出相应的手势时,就会向指定的目标对象发送指定的动作消息。由UIGestureRecognizer对象发出的动作消息都会遵守以下规范:
- (void)action:(UIGestureRecognizer *)gestureRecognizer;
UIGestureRecognizer对象在识别手势时,会截取本应由其附着的视图自行处理的触摸事件(见图13-2)。因此,附着了UIGestureRecognizer对象的视图可能不会收到常规的UIResponder消息,例如touchesBegan:withEvent:。
图13-2 UIGestureRecognizer对象会截取UITouch对象