iOS手势识别器

来源:互联网 发布:vb怎么添加下拉菜单 编辑:程序博客网 时间:2024/05/21 05:55

UIGestureRecognizer

UIGestureRecognizer类,用于检测丶识别用户使用设备时所用的手势.它是一个抽象类,定义了所有手势的基本行为.以下是UIGestureRecognizer子类,用于处理具体的用户手势行为:

  UITapGestureRecognizer // 1.单击

  UILongPressGestureRecognizer // 3.长按

  UISwipeGestureRecognizer // 4.轻扫

  UIPanGestureRecognizer // 5.移动

  UIRotationGestureRecognizer // 6.旋转

  UIPinchGestureRecognizer // 7.捏合


创建手势:

// 1.单击    UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapAction:)];    [imgView addGestureRecognizer:tap];        // 2.双击    UITapGestureRecognizer *doubleTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(doubleTapAction:)];    doubleTap.numberOfTapsRequired = 2;    [imgView addGestureRecognizer:doubleTap];        // 双击失败才单击    [tap requireGestureRecognizerToFail:doubleTap];        // 3.长按    UILongPressGestureRecognizer *longPress = [[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(longPressAction:)];//设置最短时间    longPress.minimumPressDuration = 1;    [imgView addGestureRecognizer:longPress];            // 4.轻扫    UISwipeGestureRecognizer *swipe = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(swipeAction:)];    // 设置轻扫方向    [swipe setDirection:UISwipeGestureRecognizerDirectionRight];    [imgView addGestureRecognizer:swipe];        // 5.移动    UIPanGestureRecognizer *pan = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(panAction:)];    [imgView addGestureRecognizer:pan];        // 轻扫失败才移动    [pan requireGestureRecognizerToFail:swipe];        // 6.旋转    UIRotationGestureRecognizer *rotation = [[UIRotationGestureRecognizer alloc] initWithTarget:self action:@selector(rotationAction:)];    [imgView addGestureRecognizer:rotation];        // 7.捏合    UIPinchGestureRecognizer *pinch = [[UIPinchGestureRecognizer alloc] initWithTarget:self action:@selector(pinchAction:)];    [imgView addGestureRecognizer:pinch];

< GestureAction >

手势触发事件:

-(void)longPressAction:(UILongPressGestureRecognizer *)longPress{    if (longPress.state == UIGestureRecognizerStateBegan) {        NSLog(@"长按开始");    }else if (longPress.state == UIGestureRecognizerStateEnded){        NSLog(@"长按结束");    }}- (void)panAction:(UIPanGestureRecognizer *)pan {    //手指所在的坐标    CGPoint point = [pan locationInView:self.view];    _view.center = point;}- (void)rotationAction:(UIRotationGestureRecognizer *)rotation{    if (rotation.state == UIGestureRecognizerStateChanged) {                //取到弧度        CGFloat angle = rotation.rotation;                //正在旋转        rotation.view.transform = CGAffineTransformMakeRotation(angle);            } else if (rotation.state == UIGestureRecognizerStateEnded) {                //还原        [UIView animateWithDuration:.5 animations:^{                        rotation.view.transform = CGAffineTransformIdentity;        }];    }}- (void)pinchAction:(UIPinchGestureRecognizer *)pinch{    if (pinch.state == UIGestureRecognizerStateChanged) {                // 取到缩放比率        CGFloat scale = pinch.scale;                // 缩放        pinch.view.transform = CGAffineTransformMakeScale(scale, scale);            } else if (pinch.state == UIGestureRecognizerStateEnded) {                [UIView animateWithDuration:.5 animations:^{                        pinch.view.transform = CGAffineTransformIdentity;        }];    }}

< Motion 摇晃手势 >

//让当前对象成为第一响应者- (BOOL)canBecomeFirstResponder{    return YES;}- (void)motionBegan:(UIEventSubtype)motion withEvent:(UIEvent *)event{    NSLog(@"摇一摇开始");}- (void)motionEnded:(UIEventSubtype)motion withEvent:(UIEvent *)event{    NSLog(@"摇一摇结束");}

点击下面超链接可以学习一下iOS手势识别的详细使用:一篇很好的iOS手势识别文章


0 0
原创粉丝点击