IOS手势识别

来源:互联网 发布:网络协议抽象成软件 编辑:程序博客网 时间:2024/05/01 08:41
1.响应者链的事件传递过程(1)如果view的控制器存在,就传递给控制器;如果控制器不存在,则将其传递给它的父视图。(2)在视图层次结构的最顶级视图,如果也不能处理收到的事件或消息,则其将事件或消息传递给window对象进行处理。(3)如果window对象也不处理,则其将事件或消息传递给UIApplication对象。(4)如果UIApplication也不能处理该事件或消息,则将其丢弃。2. UIGestureRecognizer如果想监听一个view上面的触摸事件,之前的做法是:(1)自定义一个view。(2)实现view的touches方法,在方法内部实现具体处理代码。通过touches方法监听view触摸事件,有很明显的几个缺点:(1)必须得自定义view。(2)由于是在view内部的touches方法中监听触摸事件,因此默认情况下,无法让其他外界对象监听view的触摸事件。(3)不容易区分用户的具体手势行为。iOS 3.2之后,苹果推出了手势识别功能(Gesture Recognizer),在触摸事件处理方面,大大简化了开发者的开发难度。为了完成手势识别,必须借助于手势识别器----UIGestureRecognizer,利用UIGestureRecognizer,能轻松识别用户在某个view上面做的一些常见手势,UIGestureRecognizer是一个抽象类,定义了所有手势的基本行为,使用它的子类才能处理具体的手势:(1)UITapGestureRecognizer(敲击)(2)UIPinchGestureRecognizer(捏合,用于缩放)(3)UIPanGestureRecognizer(拖拽)(4)UISwipeGestureRecognizer(轻扫)(5)UIRotationGestureRecognizer(旋转)(6)UILongPressGestureRecognizer(长按)

代码:为一个view添加一个事件(两个手指点击两次才会触发)

#import "ViewController.h"@interface ViewController ()@property (weak, nonatomic) IBOutlet UIView *grayView;@end@implementation ViewController- (void)viewDidLoad {    [super viewDidLoad];    UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tap:)];    tap.numberOfTapsRequired = 2;// 设置点击次数:默认为1    tap.numberOfTouchesRequired = 2; // 设置点击的手指个数    [self.grayView addGestureRecognizer:tap];}- (void)tap:(UITapGestureRecognizer *)tapGesture{    NSLog(@"用两个手指点击了两次");}- (void)didReceiveMemoryWarning {    [super didReceiveMemoryWarning];    // Dispose of any resources that can be recreated.}@end
0 0