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;//取消形变
		}];
	}
}

转载于:https://my.oschina.net/u/2601376/blog/845211

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值