开发者社区> 浪途> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

iOS开发中手势识别

简介: iOS开发中手势识别有六种: 轻击手势(TapGestureRecognizer), 轻扫手势(SwipeGestureRecognizer), 长按手势(LongPressGestureRecognizer), 拖动手势(PanGestureRecognizer), 捏合手势(PinchGestureRecognizer), 旋转手势(RotationGestureRec
+关注继续查看

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


轻击手势(TapGestureRecognizer),

轻扫手势(SwipeGestureRecognizer),

长按手势(LongPressGestureRecognizer),

拖动手势(PanGestureRecognizer),

捏合手势(PinchGestureRecognizer),

旋转手势(RotationGestureRecognizer),


1,轻击手势(TapGestureRecognizer)





UITapGestureRecognizer*tapGesture=[[UITapGestureRecognizeralloc]initWithTarget:selfaction:@selector(tapGesture:)];

tapGesture.numberOfTapsRequired=1;//点击次数

tapGesture.numberOfTouchesRequired=1;//点击手指数

[self.viewaddGestureRecognizer:tapGesture];

//轻击手势触发方法

-(void)tapGesture:(UITapGestureRecognizer*)sender

{

//yourcode

}

2,长按手势(LongPressGestureRecognizer)

UILongPressGestureRecognizer*longPressGesture=[[UILongPressGestureRecognizeralloc]initWithTarget:selfaction:@selector(longPressGesture:)];

//设置长按时间

longPressGesture.minimumPressDuration=0.5;

[self.viewaddGestureRecognizer:longPressGesture];

//长按手势触发方法

-(void)longPressGesture:(id)sender

{

UILongPressGestureRecognizer*longPress=sender;

if(longPress.state==UIGestureRecognizerStateBegan)

{

//yourcode

}

}

说明:长按手势的常用状态如下

开始:UIGestureRecognizerStateBegan

改变:UIGestureRecognizerStateChanged

结束:UIGestureRecognizerStateEnded

取消:UIGestureRecognizerStateCancelled

失败:UIGestureRecognizerStateFailed

3,轻扫手势(SwipeGestureRecognizer)

UISwipeGestureRecognizer*swipeGesture=[[UISwipeGestureRecognizeralloc]initWithTarget:selfaction:@selector(swipeGesture:)];

//设置轻扫的方向

swipeGesture.direction=UISwipeGestureRecognizerDirectionRight;//向右

[self.viewaddGestureRecognizer:swipeGesture];

UISwipeGestureRecognizer*swipeGestureLeft=[[UISwipeGestureRecognizeralloc]initWithTarget:selfaction:@selector(swipeGesture:)];

//设置轻扫的方向

swipeGestureLeft.direction=UISwipeGestureRecognizerDirectionLeft;//向左

[self.viewaddGestureRecognizer:swipeGestureLeft];

//轻扫手势触发方法

-(void)swipeGesture:(id)sender

{

UISwipeGestureRecognizer*swipe=sender;

if(swipe.direction==UISwipeGestureRecognizerDirectionLeft)

{

//向左轻扫

}

if(swipe.direction==UISwipeGestureRecognizerDirectionRight)

{

//向右轻扫

}

}

4,捏合手势(PinchGestureRecognizer)

UIPinchGestureRecognizer*pinchGesture=[[UIPinchGestureRecognizeralloc]initWithTarget:selfaction:@selector(pinchGesture:)];

[self.viewaddGestureRecognizer:pinchGesture];

////捏合手势触发方法

-(void)pinchGesture:(id)sender

{

UIPinchGestureRecognizer*gesture=sender;

//手势改变时

if(gesture.state==UIGestureRecognizerStateChanged)

{

//捏合手势中scale属性记录的缩放比例

_imageView.transform=CGAffineTransformMakeScale(gesture.scale,gesture.scale);

}

//结束后恢复

if(gesture.state==UIGestureRecognizerStateEnded)

{

[UIViewanimateWithDuration:0.5animations:^{

_imageView.transform=CGAffineTransformIdentity;//取消一切形变

}];

}

}

5,拖动手势(PanGestureRecognizer)

UIPanGestureRecognizer*panGesture=[[UIPanGestureRecognizeralloc]initWithTarget:selfaction:@selector(panGesture:)];

[self.viewaddGestureRecognizer:panGesture];

//拖动手势触发方法

-(void)panGesture:(id)sender

{

UIPanGestureRecognizer*panGesture=sender;

CGPointmovePoint=[panGesturetranslationInView:self.view];

//yourcode

}

6,旋转手势(RotationGestureRecognizer)

UIRotationGestureRecognizer*rotationGesture=[[UIRotationGestureRecognizeralloc]initWithTarget:selfaction:@selector(rotationGesture:)];

[self.viewaddGestureRecognizer:rotationGesture];

//旋转手势触发方法

-(void)rotationGesture:(id)sender

{

UIRotationGestureRecognizer*gesture=sender;

if(gesture.state==UIGestureRecognizerStateChanged)

{

_imageView.transform=CGAffineTransformMakeRotation(gesture.rotation);

}

if(gesture.state==UIGestureRecognizerStateEnded)

{

[UIViewanimateWithDuration:1animations:^{

_imageView.transform=CGAffineTransformIdentity;//取消形变

}];

}

}

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
iOS开发:下架App的步骤
首先登陆你的 iTunes Connect
0 0
2022 ios APP最新iOS开发上架测试教程
2022 ios APP最新iOS开发上架测试教程
0 0
[ios开发]-APP-上架流程
由于苹果的机制,在非越狱机器上安装必须通过官方的Appstore, 开发者开发好应用后上传Appstore,也需要通过审核等环节。 AppCan作为一个跨主流平台的一个开发平台,也对ipa包上传Appstore作了支持。 本文从三个流程来介绍如何实现AppCan在 线编译出ipa包,以及上传到苹果Appstore。
0 0
iOS开发之打包上传到App Store——(一)各种证书的理解
iOS开发之打包上传到App Store——(一)各种证书的理解
0 0
IOS APP开发:苹果app从开发到上架教程详解
IOS APP开发:苹果app从开发到上架教程详解
0 0
IOS开发:UniAPP实现BLE低功耗蓝牙开发1
1、Uni-app介绍 2、Uni-app优点 3、BLE开发流程
0 0
iOS开发 - 穿针引线之内存管理(二)
iOS开发 - 穿针引线之内存管理
0 0
iOS开发 - 穿针引线之内存管理(一)
iOS开发 - 穿针引线之内存管理
0 0
iOS开发 - NSTimer极限使用(二)
iOS开发 - NSTimer极限使用
0 0
+关注
浪途
到2016年10月,4年的iOS开发了,一边一边学习Java后台开发
文章
问答
文章排行榜
最热
最新
相关电子书
更多
Facebook iOS App技术演化十年之路
立即下载
From Java_Android to Swift iOS
立即下载
深入剖析 iOS 性能优化
立即下载