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

}];

}

}

目录
相关文章
|
22天前
|
API 数据安全/隐私保护 iOS开发
利用uni-app 开发的iOS app 发布到App Store全流程
利用uni-app 开发的iOS app 发布到App Store全流程
67 3
|
3月前
|
存储 iOS开发
iOS 开发,如何进行应用的本地化(Localization)?
iOS 开发,如何进行应用的本地化(Localization)?
120 2
|
3月前
|
存储 数据建模 数据库
IOS开发数据存储:什么是 UserDefaults?有哪些替代方案?
IOS开发数据存储:什么是 UserDefaults?有哪些替代方案?
36 0
|
3月前
|
API 定位技术 iOS开发
IOS开发基础知识:什么是 Cocoa Touch?它在 iOS 开发中的作用是什么?
IOS开发基础知识:什么是 Cocoa Touch?它在 iOS 开发中的作用是什么?
42 2
|
3月前
|
安全 编译器 Swift
IOS开发基础知识: 对比 Swift 和 Objective-C 的优缺点。
IOS开发基础知识: 对比 Swift 和 Objective-C 的优缺点。
81 2
|
3月前
|
API 开发工具 iOS开发
iOS 开发高效率工具包:10 大必备工具
iOS 开发高效率工具包:10 大必备工具
39 1
|
3月前
|
API 数据安全/隐私保护 iOS开发
利用uni-app 开发的iOS app 发布到App Store全流程
利用uni-app 开发的iOS app 发布到App Store全流程
52 1
|
2月前
|
监控 API Swift
用Swift开发iOS平台上的上网行为管理监控软件
在当今数字化时代,随着智能手机的普及,人们对于网络的依赖日益增加。然而,对于一些特定场景,如家庭、学校或者企业,对于iOS设备上的网络行为进行管理和监控显得尤为重要。为了满足这一需求,我们可以利用Swift语言开发一款iOS平台上的上网行为管理监控软件。
172 2
|
3月前
|
数据可视化 iOS开发
iOS 开发,什么是 Interface Builder(IB)?如何使用 IB 构建用户界面?
iOS 开发,什么是 Interface Builder(IB)?如何使用 IB 构建用户界面?
35 4
|
3月前
|
iOS开发
iOS开发解释 App 生命周期,包括各个阶段的调用顺序。
iOS开发解释 App 生命周期,包括各个阶段的调用顺序。
26 1