11.UIGestureRecognizer

UIGestureRecognizer是一个具体的手势识别类的抽象基类。
(1)UITapGestureRecognizer        点击
  1. // 单击的 Recognizer  
  2.     UITapGestureRecognizer* singleRecognizer;  
  3.     singleRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:selfaction:@selector(SingleTap:)];  
  4.     //点击的次数  
  5.     singleTapRecognizer.numberOfTapsRequired = 1; // 单击  
  6.   
  7.     //给self.view添加一个手势监测;  
  8.   
  9.   [self.view addGestureRecognizer:singleRecognizer];  
  10.   
  11.     
  12.     // 双击的 Recognizer  
  13.     UITapGestureRecognizer* doubleRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:selfaction:@selector(DoubleTap:)];  
  14.     doubleRecognizer.numberOfTapsRequired = 2; // 双击  
  15.     //关键语句,给self.view添加一个手势监测;  
  16.     [self.view addGestureRecognizer:doubleRecognizer];  
  17.       
  18.     // 关键在这一行,双击手势确定监测失败才会触发单击手势的相应操作  
  19.     [singleRecognizer requireGestureRecognizerToFail:doubleRecognizer];  
  20.     [singleRecognizer release];  
  21.     [doubleRecognizer release];  
  22. }  
  23.   
  24. -(void)SingleTap:(UITapGestureRecognizer*)recognizer  
  25. {  
  26. //处理单击操作  
  27. }  
  28.   
  29. -(void)DoubleTap:(UITapGestureRecognizer*)recognizer  
  30. {  
  31. //处理双击操作  
  32. }  


(2)UIPinchGestureRecognizer      捏合

  UIPinchGestureRecognizer *pinch = [[UIPinchGestureRecognizer alloc] initWithTarget:self action:@selector(handlePinch:)];

/*识别放大缩小 */

- (void)handlePinch:(UIPinchGestureRecognizer *)gestureRecognizer {

    CGPoint location = [gestureRecognizer locationInView:self.view];

[self drawImageForGestureRecognizer:gestureRecognizer atPoint:location underAdditionalSituation:nil];

    gestureRecognizer.view.transform = CGAffineTransformScale(gestureRecognizer.view.transform, gestureRecognizer.scale, gestureRecognizer.scale); 

//缩放中心点是view的中心点

//self.view.transform = CGAffineTransformScale(CGAffineTransformIdentity, 0.5f, 0.5f); 

    gestureRecognizer.scale = 1;

}



(3)UIRotationGestureRecognizer     旋转

UIRotationGestureRecognizer *rotation = [[UIRotationGestureRecognizer alloc] initWithTarget:self action:@selector(handleRotation:)];

- (void)handleRotation:(UIRotationGestureRecognizer *)gestureRecognizer {

    

    CGPoint location = [gestureRecognizer locationInView:self.view];

    

    CGAffineTransform transform = CGAffineTransformMakeRotation([gestureRecognizer rotation]);

    self.imageView.transform = transform;

[self drawImageForGestureRecognizer:gestureRecognizer atPoint:location underAdditionalSituation:nil];

    

    if (([gestureRecognizer state] == UIGestureRecognizerStateEnded) || ([gestureRecognizer state] == UIGestureRecognizerStateCancelled)) {

        [UIView animateWithDuration:0.5 animations:^{

            self.imageView.alpha = 0.0;

            self.imageView.transform = CGAffineTransformIdentity;

}

}


(4)UISwipeGestureRecognizer      滑动
    //滑动
    UISwipeGestureRecognizer *swipe = [[UISwipeGestureRecognizer alloc]initWithTarget:self action:@selector(swipeGesture:)];
    //设置能识别滑动手势的方向,
    swipe.direction = UISwipeGestureRecognizerDirectionLeft;
    swipe.direction = UISwipeGestureRecognizerDirectionRight;
    swipe.direction = UISwipeGestureRecognizerDirectionUp;
    swipe.direction = UISwipeGestureRecognizerDirectionDown;
    //注意一个手势识别器只能识别一个方向上的滑动
    [self.view addGestureRecognizer:swipe];

(5)UIPanGestureRecognizer         拖动
每一次拖动操作状态,都会获取到translatedPoint,从开始到结束。它是一个绝对值,可以看着在”self.view“对应的坐标体系中,拖动的视图对象center的移动开始和结束的点差。
最简单的处理过程是这样:
  • UIPanGestureRecognizer *pan = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(handlePan:)];  
  •     [self.imgView setUserInteractionEnabled:YES];  
  •     [self.imgView addGestureRecognizer:pan];  
  •     [pan release];  
    handlePan
{
 CGP int translatedPoint = [recognizer translationInView:self.view];
    CGFloat x = recognizer.view.center.x + translatedPoint.x;
    CGFloat y = recognizer.view.center.y + translatedPoint.y;
    recognizer.view.center = CGPointMake(x, y);
    [recognizer setTranslation:CGPointMake(0, 0) inView:self.view];
}  

  (6)UILongPressGestureRecognizer      长按
创建长按手势识别器
//长按
    UILongPressGestureRecognizer *pLongPress = [[UILongPressGestureRecognizer alloc]initWithTarget:self action:@selector(longPress:)];
    //设置长按多少秒后才识别这个手势
    pLongPress.minimumPressDuration = 2;
    [self.view addGestureRecognizer:pLongPress];

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值