手势

手势分为点击手势、捏合、滑动、左右滑动、长按、旋转等手势。ide

点击手势:动画

初始化
ui

UITapGestureRecognizer *singleFingerOne = [[UITapGestureRecognizeralloc] initWithTarget:self
                                           action:@selector(fingerIncident:)];

设置手指数代理

singleFingerOne.numberOfTouchesRequired = 1;

设置点击数code

singleFingerOne.numberOfTapsRequired = 1;

设置代理orm

singleFingerOne.delegate= self;

添加到所属的view事件

[self.imageView addGestureRecognizer:singleFingerOne];

当单指单击与双击同时存在时,双击时会首先触发单击手势,所以须要对双击作注册ip

[singleFingerOne requireGestureRecognizerToFail:singleFingerTwo];

同理,触发双指点击时也会有先触发单指手势的状况ci

[doubleFingerOne requireGestureRecognizerToFail:doubleFingerTwo];
//手指点击事件
-
(void)fingerIncident:(UITapGestureRecognizer *)sender
{
   if(sender.numberOfTouchesRequired==1)
{
    //单指点击事件
    if(sender.numberOfTapsRequired == 1) {
      //单指单击
      NSLog(@"单指单击");
      [sender.view.layer removeAllAnimations];
    }
    elseif(sender.numberOfTapsRequired ==2 ){
      //单指双击
      NSLog(@"单指双击");
    }
  }
   elseif (sender.numberOfTouchesRequired==2)
{
    //双指点击事件
    if(sender.numberOfTapsRequired == 1) {
      //双指单击
      NSLog(@"双指单击");
    }
    elseif(sender.numberOfTapsRequired ==2 ){
      //双指双击
      NSLog(@"双指双击");
    }
  }
}

2.捏合手势rem

UIPinchGestureRecognizer*pinchGesture=[[UIPinchGestureRecognizer alloc]initWithTarget:self
                                       action:@selector(handlePinchGesture:)];
//imageView添加手势识别 
[self.imageView addGestureRecognizer:pinchGesture];
//手指捏事件
-(void)handlePinchGesture:(UIPinchGestureRecognizer *)sender{
  NSLog(@"捏");
   
   if([sender state] ==UIGestureRecognizerStateEnded)
{
    lastScale =1.0;
    return;
  }
   
  CGFloat scale = 1.0 - (lastScale - [(UIPinchGestureRecognizer*)senderscale]);
   
  CGAffineTransform newTransform =CGAffineTransformScale(sender.view.transform, scale, scale);
   
  [sender.view setTransform:newTransform];
  lastScale = [sender scale];
}

3.旋转手势

UIRotationGestureRecognizer *rotateGesture=[[UIRotationGestureRecognizeralloc]initWithTarget:
                                           self
                                           action:@selector(handleRotateGesture:)];
[self.imageView addGestureRecognizer:rotateGesture];
//手指旋转事件
-(void)handleRotateGesture:(UIRotationGestureRecognizer *)sender{
  NSLog(@"旋转");
   
   NSLog(@"sender.scale=%f",sender.rotation);
   NSLog(@"sender.velocity=%f",sender.velocity);

  sender.view.transform=CGAffineTransformRotate(sender.view.transform,
sender.rotation);
  sender.rotation=0;
}

4.拖手势

UIPanGestureRecognizer*panGesture=[[UIPanGestureRecognizer alloc]initWithTarget:self 
                                   action:@selector(handlePanGesture:)];  
[self.imageView addGestureRecognizer:panGesture];
//手指拖事件
-(void)handlePanGesture:(UIPanGestureRecognizer *)sender{
  NSLog(@"拖");
  NSLog(@"sender=%@",sender);
   CGPoint translation=[(UIPanGestureRecognizer*)sendertranslationInView:self.view];
   
  //开始
   if(sender.state==UIGestureRecognizerStateBegan) {
    x=sender.view.center.x;
    y=sender.view.center.y;
  }
   //进行中
   if(sender.state==UIGestureRecognizerStateChanged)
{
    sender.view.center=CGPointMake(x+translation.x, y+translation.y);
  }
  //结束
   if(sender.state==UIGestureRecognizerStateEnded) {
    sender.view.center=CGPointMake(x+translation.x, y+translation.y);
  }
}

5.左划

UISwipeGestureRecognizer*swipeLeftGesture=[[UISwipeGestureRecognizer alloc]initWithTarget:self
                                           action:@selector(handleSwipeGesture:)]; 
swipeGesture.direction=UISwipeGestureRecognizerDirectionLeft;//不设置默认是右
[self.imageView addGestureRecognizer:swipeLeftGesture];

6.右划

UISwipeGestureRecognizer*swipeGesture=[[UISwipeGestureRecognizer alloc]initWithTarget:self 
                                      action:@selector(handleSwipeGesture:)]; 
 [self.imageView addGestureRecognizer:swipeGesture];
//手指左右滑动事件
-(void)handleSwipeGesture:(UISwipeGestureRecognizer *)sender{
   if(sender.direction==UISwipeGestureRecognizerDirectionLeft)
{
    NSLog(@"左滑");
  }
  else{
    NSLog(@"右滑");
  }
}

7.长按

UILongPressGestureRecognizer *longpressGesutre=[[UILongPressGestureRecognizeralloc]initWithTarget:self
                                                action:@selector(handleLongpressGesture:)];
   //长按时间为1秒
  longpressGesutre.minimumPressDuration=0.5;
   //容许15秒中运动
  longpressGesutre.allowableMovement=3;
   //所需触摸1次
  longpressGesutre.numberOfTouchesRequired=1;
  [self.imageView addGestureRecognizer:longpressGesutre];
  [longpressGesutrerelease];
}
//手指长按事件
-(void)handleLongpressGesture:(UILongPressGestureRecognizer *)sender{
  NSLog(@"长按");
   if(sender.state==UIGestureRecognizerStateBegan) {
    CABasicAnimation* rotationAnimation_ =
[CABasicAnimation animationWithKeyPath:@"transform.rotation.z"];
    //角度转弧度
    rotationAnimation_.fromValue = [NSNumber numberWithFloat:(-0.02)];
    rotationAnimation_.toValue = [NSNumber numberWithFloat:(0.02)];
    //动画时间
    rotationAnimation_.duration = 0.1f;
    //动画次数
    rotationAnimation_.repeatCount=FLT_MAX;
    //回退动画
    rotationAnimation_.autoreverses = YES;
    //动画开始结束的快慢,设置为加速
    rotationAnimation_.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut];
    [[sender.view layer] addAnimation:rotationAnimation_forKey:@"revItUpAnimation"];
  }
}
相关文章
相关标签/搜索