首页 > 代码库 > iOS开发中六种手势识别

iOS开发中六种手势识别

iOS开发中手势识别有六种: 

轻击手势(TapGestureRecognizer), 

轻扫手势 (SwipeGestureRecognizer), 

长按手势(LongPressGestureRecognizer), 

拖动手势(PanGestureRecognizer), 

捏合手势(PinchGestureRecognizer), 

旋转手势(RotationGestureRecognizer), 

1,轻击手势(TapGestureRecognizer) 

UITapGestureRecognizer *tapGesture = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapGesture:)];
tapGesture.numberOfTapsRequired = 1; //点击次数
tapGesture.numberOfTouchesRequired = 1; //点击手指数
[self.view addGestureRecognizer:tapGesture];

//轻击手势触发方法
-(void)tapGesture:(UITapGestureRecognizer *)sender
{
    //your code
}

2,长按手势(LongPressGestureRecognizer) 

UILongPressGestureRecognizer *longPressGesture = [[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(longPressGesture:)];
//设置长按时间
longPressGesture.minimumPressDuration = 0.5;
[self.view addGestureRecognizer:longPressGesture];
//长按手势触发方法
-(void)longPressGesture:(id)sender
{
	 UILongPressGestureRecognizer *longPress = sender;
	 if (longPress.state == UIGestureRecognizerStateBegan)
	 {
		 //your code
	 }
}
说明:长按手势的常用状态如下
开始:UIGestureRecognizerStateBegan
改变:UIGestureRecognizerStateChanged
结束:UIGestureRecognizerStateEnded
取消:UIGestureRecognizerStateCancelled
失败:UIGestureRecognizerStateFailed

3,轻扫手势(SwipeGestureRecognizer) 

UISwipeGestureRecognizer *swipeGesture = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(swipeGesture:)];
//设置轻扫的方向
swipeGesture.direction = UISwipeGestureRecognizerDirectionRight; //向右
[self.view addGestureRecognizer:swipeGesture];
UISwipeGestureRecognizer *swipeGestureLeft = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(swipeGesture:)];
//设置轻扫的方向
swipeGestureLeft.direction = UISwipeGestureRecognizerDirectionLeft; //向左
[self.view addGestureRecognizer:swipeGestureLeft];
//轻扫手势触发方法
-(void)swipeGesture:(id)sender
{
	UISwipeGestureRecognizer *swipe = sender;
	if (swipe.direction == UISwipeGestureRecognizerDirectionLeft)
	{
		//向左轻扫
	}
	if (swipe.direction == UISwipeGestureRecognizerDirectionRight)
	{
		//向右轻扫
	}
}

4,捏合手势(PinchGestureRecognizer) 

UIPinchGestureRecognizer *pinchGesture = [[UIPinchGestureRecognizer alloc] initWithTarget:self action:@selector(pinchGesture:)];
[self.view addGestureRecognizer:pinchGesture];
	////捏合手势触发方法
-(void) pinchGesture:(id)sender
{
	UIPinchGestureRecognizer *gesture = sender;
	//手势改变时
	if (gesture.state == UIGestureRecognizerStateChanged)
	{
		 //捏合手势中scale属性记录的缩放比例
		_imageView.transform = CGAffineTransformMakeScale(gesture.scale, gesture.scale);
	}
	//结束后恢复
	if(gesture.state==UIGestureRecognizerStateEnded)
	{
		[UIView animateWithDuration:0.5 animations:^{
			_imageView.transform = CGAffineTransformIdentity;//取消一切形变
		}];
	}
}

5,拖动手势(PanGestureRecognizer) 

UIPanGestureRecognizer *panGesture = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(panGesture:)];
[self.view addGestureRecognizer:panGesture];

//拖动手势触发方法
-(void) panGesture:(id)sender
{
    UIPanGestureRecognizer *panGesture = sender;
    CGPoint movePoint = [panGesture translationInView:self.view];
    //your code
}

6,旋转手势(RotationGestureRecognizer) 

UIRotationGestureRecognizer *rotationGesture = [[UIRotationGestureRecognizer alloc] initWithTarget:self action:@selector(rotationGesture:)];
[self.view addGestureRecognizer:rotationGesture];
//旋转手势触发方法
-(void)rotationGesture:(id)sender
{
	UIRotationGestureRecognizer *gesture = sender;
	if (gesture.state==UIGestureRecognizerStateChanged)
	{
		_imageView.transform=CGAffineTransformMakeRotation(gesture.rotation);
	}
	if(gesture.state==UIGestureRecognizerStateEnded)
	{
		[UIView animateWithDuration:1 animations:^{
			_imageView.transform=CGAffineTransformIdentity;//取消形变
		}];
	}
}

iOS开发中六种手势识别