美文网首页
iOS开发中六种手势识别

iOS开发中六种手势识别

作者: 翻山越岭的另一边 | 来源:发表于2016-10-08 16:02 被阅读29次

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开发中六种手势识别

      本文链接:https://www.haomeiwen.com/subject/kmiuyttx.html