iOS七大手势识别

也没有什么好说的,方法都差不多,只要记得当你想要同时实现两个或多个手势的话,要遵守<UIGestureRecognizerDelegate>协议,闲言休叙,直接上代码:

  1 #import "RootViewController.h"
  2 #import "RootView.h"
  3
  4 @interface RootViewController () <UIGestureRecognizerDelegate>  // 手势识别器代理
  5 @property (nonatomic, strong) RootView *rootView;
  6
  7 @end
  8
  9 @implementation RootViewController
 10
 11 - (void)loadView {
 12     self.rootView = [[RootView alloc] initWithFrame:[UIScreen mainScreen].bounds];
 13     self.view = self.rootView;
 14 }
 15
 16
 17 - (void)viewDidLoad {
 18     [super viewDidLoad];
 19
 20     // 轻拍
 21     [self tapGesture];
 22
 23     // 平移
 24     //[self panGesture];
 25
 26     // 缩放(捏合)
 27     [self pinchGesture];
 28
 29     // 旋转
 30     [self rotationGesture];
 31
 32     // 长按
 33     [self longPressGesture];
 34
 35     // 轻扫(滑动)
 36     [self swipeGesture];
 37
 38     // 屏幕边缘轻扫(滑动)
 39     [self screenEdgePanGesture];
 40 }
 41
 42
 43 #pragma mark - 轻拍手势 UITapGestureRecognizer
 44 // 添加轻拍手势
 45 - (void)tapGesture {
 46     // 1.创建手势识别对象
 47     UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapGestureAction:)];
 48
 49     // 2.将手势添加到相应视图上
 50     [self.rootView.imageView addGestureRecognizer:tap];
 51 }
 52
 53 // 实现轻拍手势事件
 54 - (void)tapGestureAction:(UITapGestureRecognizer *)tap {
 55     NSLog(@"轻拍成功");
 56 }
 57
 58
 59 #pragma mark - 平移手势 UIPanGestureRecognizer
 60 // 添加平移手势
 61 - (void)panGesture {
 62     // 1.创建手势识别对象
 63     UIPanGestureRecognizer *pan = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(panGestureAction:)];
 64
 65     // 2.将手势添加到相应的视图上
 66     [self.rootView.imageView addGestureRecognizer:pan];
 67
 68 }
 69
 70 // 实现平移手势事件
 71 - (void)panGestureAction:(UIPanGestureRecognizer *)pan {
 72
 73     NSLog(@"平移成功");
 74
 75     // 在view上面挪动的距离
 76     CGPoint p = [pan translationInView:pan.view];
 77     pan.view.transform = CGAffineTransformTranslate(pan.view.transform, p.x, p.y);
 78
 79     // 清空移动的距离
 80     [pan setTranslation:CGPointZero inView:pan.view];
 81 }
 82
 83
 84 #pragma mark - 缩放手势(捏合)UIPinchGestureRecognizer
 85 // 添加平移手势
 86 - (void)pinchGesture {
 87     // 1.创建手势识别对象
 88     UIPinchGestureRecognizer *pinch = [[UIPinchGestureRecognizer alloc] initWithTarget:self action:@selector(pinchGestureAction:)];
 89
 90     // 设置代理
 91     pinch.delegate = self;
 92
 93     // 2.将手势添加到相应的视图上
 94     [self.rootView.imageView addGestureRecognizer:pinch];
 95
 96 }
 97
 98 // 实现缩放手势事件
 99 - (void)pinchGestureAction:(UIPinchGestureRecognizer *)pinch {
100
101     pinch.view.transform = CGAffineTransformScale(pinch.view.transform, pinch.scale, pinch.scale);
102     pinch.scale = 1;
103
104 }
105
106
107 #pragma mark - 旋转手势 UIRotationGestureRecognizer
108 // 添加旋转手势
109 - (void)rotationGesture {
110     // 1.创建手势识别对象
111     UIRotationGestureRecognizer *rotation = [[UIRotationGestureRecognizer alloc] initWithTarget:self action:@selector(rotationGestureAction:)];
112
113     // 设置代理
114     rotation.delegate = self;
115
116     // 2.将手势添加到相应的视图上
117     [self.rootView.imageView addGestureRecognizer:rotation];
118
119 }
120
121 // 实现旋转手势事件
122 - (void)rotationGestureAction:(UIRotationGestureRecognizer *)rotation {
123
124     rotation.view.transform = CGAffineTransformRotate(rotation.view.transform, rotation.rotation);
125     rotation.rotation = 0;
126 }
127
128
129 #pragma mark - 长按手势 UILongPressGestureRecognizer
130 // 添加长按手势
131 - (void)longPressGesture {
132     // 1.创建手势识别对象
133     UILongPressGestureRecognizer *longPress = [[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(longPressGestureAction:)];
134
135     // 2.将手势添加到相应的视图上
136     [self.rootView.imageView addGestureRecognizer:longPress];
137 }
138
139 // 实现长按手势事件
140 - (void)longPressGestureAction:(UILongPressGestureRecognizer *)longPress {
141     // 开始长按的时候执行
142     if (longPress.state == UIGestureRecognizerStateBegan) {
143         NSLog(@"长按成功");
144     }
145 }
146
147
148 #pragma mark - 轻扫手势 UISwipeGestureRecognizer
149 // 添加轻扫手势
150 - (void)swipeGesture {
151     // 向上滑动
152     // 1.创建手势识别对象
153     UISwipeGestureRecognizer *upSwipe = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(swipeGestureAction:)];
154     upSwipe.direction = UISwipeGestureRecognizerDirectionUp;
155     // 2.将手势添加到相应的视图上
156     [self.rootView.imageView addGestureRecognizer:upSwipe];
157
158
159     // 向下滑动
160     // 1.创建手势识别对象
161     UISwipeGestureRecognizer *downSwipe = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(swipeGestureAction:)];
162     downSwipe.direction = UISwipeGestureRecognizerDirectionDown;
163     // 2.将手势添加到相应的视图上
164     [self.rootView.imageView addGestureRecognizer:downSwipe];
165
166
167     // 向右滑动
168     // 1.创建手势识别对象
169     UISwipeGestureRecognizer *rightSwipe = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(swipeGestureAction:)];
170     rightSwipe.direction = UISwipeGestureRecognizerDirectionRight;
171     // 2.将手势添加到相应的视图上
172     [self.rootView.imageView addGestureRecognizer:rightSwipe];
173
174
175     // 向左滑动
176     // 1.创建手势识别对象
177     UISwipeGestureRecognizer *leftSwipe = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(swipeGestureAction:)];
178     leftSwipe.direction = UISwipeGestureRecognizerDirectionLeft;
179     // 2.将手势添加到相应的视图上
180     [self.rootView.imageView addGestureRecognizer:leftSwipe];
181
182 }
183
184 // 实现轻扫手势事件
185 - (void)swipeGestureAction:(UISwipeGestureRecognizer *)swipe {
186     if (swipe.direction == UISwipeGestureRecognizerDirectionUp) {
187         NSLog(@"向上滑动");
188     }
189
190     if (swipe.direction == UISwipeGestureRecognizerDirectionDown) {
191         NSLog(@"向下滑动");
192     }
193
194     if (swipe.direction == UISwipeGestureRecognizerDirectionLeft) {
195         NSLog(@"向左滑动");
196     }
197
198     if (swipe.direction == UISwipeGestureRecognizerDirectionRight) {
199         NSLog(@"向右滑动");
200     }
201 }
202
203
204 #pragma mark - 屏幕边缘轻扫 UIScreenEdgePanGestureRecognizer
205 // 添加屏幕边缘轻扫手势(也有多个方式,我们这里只介绍一下,从屏幕顶部和左边轻扫,其他的都一样)
206 - (void)screenEdgePanGesture {
207     // 从屏幕顶部轻扫屏幕边缘
208     // 1.创建手势识别对象
209     UIScreenEdgePanGestureRecognizer *TopScreenEdgePan = [[UIScreenEdgePanGestureRecognizer alloc] initWithTarget:self action:@selector(screenEdgePanGestureAction:)];
210     TopScreenEdgePan.edges = UIRectEdgeTop;
211     // 2.将手势添加到相应的视图上
212     [self.rootView addGestureRecognizer:TopScreenEdgePan];
213
214
215     // 从屏幕左边轻扫屏幕边缘
216     // 1.创建手势识别对象
217     UIScreenEdgePanGestureRecognizer *leftScreenEdgePan = [[UIScreenEdgePanGestureRecognizer alloc] initWithTarget:self action:@selector(screenEdgePanGestureAction:)];
218     leftScreenEdgePan.edges = UIRectEdgeLeft;
219     // 2.将手势添加到相应的视图上
220     [self.rootView addGestureRecognizer:leftScreenEdgePan];
221
222 }
223
224 // 实现屏幕边缘轻扫手势
225 - (void)screenEdgePanGestureAction:(UIScreenEdgePanGestureRecognizer *)screenEdgePan {
226     if (screenEdgePan.edges == UIRectEdgeTop) {
227         NSLog(@"从屏幕顶部轻扫屏幕边缘");
228     }
229
230     if (screenEdgePan.edges == UIRectEdgeLeft) {
231         NSLog(@"从屏幕左边轻扫屏幕边缘");
232     }
233 }
234
235
236 #pragma mark - 实现协议方法,同时识别多个手势
237 - (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer {
238     return YES;
239 }
240
241
242 - (void)didReceiveMemoryWarning {
243     [super didReceiveMemoryWarning];
244     // Dispose of any resources that can be recreated.
245 }
246 @end
时间: 2024-10-16 11:57:03

iOS七大手势识别的相关文章

IOS 使用手势识别

六种手势识别(继承于UIGestureRecongnizer基类): UITapGestureRecongnizer--检测view上的单击操作 UIPinchGestureRecongnizer--检测view上两个手指的缩放操作 UIPanGestureRecongnizer--检测view的拖拽操作 UISwipeGestureRecongnizer--检测view的轻划操作 UIRotationGestureRecongnizer--检测view的旋转操作 UILongPressGest

iOS 解析手势识别(Gesture Recognizers)

一.Gesture Recognizers Gesture Recognizers是在iOS3.2引入的,可以用来识别手势.简化定制视图事件处理的对象.Gesture Recognizers的基类为UIGestureRecognizer,这一个抽象基类,定义了实现底层手势识别行为的编程接口.在UIKit框架中提供了6个具体的手势识别类,用来识别常见的手势.这6个手势识别器类为: UITapGestureRecognizer:用来识别点击手势,包括单击,双击,甚至三击等.UIPinchGestur

iOS图形手势识别框架SGGestureRecognizer

简介 苹果官方为我们提供了简单手势的识别器,但对于图形手势,例如五角星.三角形等的识别,就需要自己实现了.通过识别这些手势,可以去执行特定的操作,或是输入公式.释放魔法等,可以为App增光添彩. 下载与使用 该框架已经上传到github,点击这里前去下载,欢迎Star! 有关该框架的使用在github上已经写明,这里不再赘述,本文主要介绍的是图形手势识别的实现原理与框架的结构. 框架的结构 一个图形手势是一条曲线,可以用采样点来描述,存储采样点的类为SGGesturePoint,使用它替代CGP

iOS开发 - 手势识别(UIGestureRecognizer)

UIGestureRecognizer 为了完成手势识别,必须借助于手势识别器--UIGestureRecognizer 利用UIGestureRecognizer,能轻松识别用户在某个view上面做的一些常见手势 UIGestureRecognizer是一个抽象类,定义了所有手势的基本行为,使用它的子类才能处理具体的手势 UITapGestureRecognizer //(敲击) UIPinchGestureRecognizer //(捏合,用于缩放) UIPanGestureRecogniz

iOS七大手势之(平移、捏合、轻扫、屏幕边缘轻扫)手势识别器方法

使用手势很简单,分为两步: 创建手势实例.当创建手势时,指定一个回调方法,当手势开始,改变.或结束时,回调方法被调用. 添加到需要识别的View中.每个手势只对应一个View,当屏幕触摸在View的边界内时,如果手势和预定的一样,那就会回调方法. (四).平移手势 (五).捏合手势 (六).轻扫手势 通过轻扫手势来改变视图上的图片 (七).屏幕边缘轻扫手势 通过屏幕轻扫手势改变视图的背景颜色 (八).同时触发两个view的手势 手势之间是互斥的,如果你想同时触发蛇和龙的view,那么需要实现协议

模拟手指或者鼠标单击和双击

有时候需要在同一个UI上实现双击和单击的操作,IOS的手势识别中自带有单击双击甚至三击四击.... 具体是这样的: var tapGestureRecognizer = UITapGestureRecognizer(target: self, action: "tapGesture:") tapGestureRecognizer.numberOfTouchesRequired=2//每次点击要求有两个点 tapGestureRecognizer.numberOfTapsRequired

没有C语言之父,就没有乔布斯和Win10

不知不觉,丹尼斯·里奇离开我们4周年了.2011年10月12日,和里奇共事20多年的同事Rob Pike从加州到新泽西去拜访他,才发现他已经去世了.由于是独居,当时无法知道准确的死亡时间,后来确定离世日期是10月9日.据他的兄弟透露,那几年丹尼斯·里奇的健康状况一直不好,他患有前列腺癌和心脏病. 乔布斯和丹尼斯·里奇都是在同年同月离世.但之后每年的这段时间,很多媒体都会纪念乔布斯,但很少提到丹尼斯·里奇. -----[下面是今年的纪念文章]----- 如果没有丹尼斯·里奇(Dennis Ritc

iOS开发系列--触摸事件、手势识别、摇晃事件、耳机线控

-- iOS事件全面解析 概览 iPhone的成功很大一部分得益于它多点触摸的强大功能,乔布斯让人们认识到手机其实是可以不用按键和手写笔直接操作的,这不愧为一项伟大的设计.今天我们就针对iOS的触摸事件(手势操作).运动事件.远程控制事件等展开学习: iOS事件简介 触摸事件 手势识别 运动事件 远程控制事件 iOS事件 在iOS中事件分为三类: 触摸事件:通过触摸.手势进行触发(例如手指点击.缩放) 运动事件:通过加速器进行触发(例如手机晃动) 远程控制事件:通过其他远程设备触发(例如耳机控制

【转】iOS手势识别的详细使用(拖动,缩放,旋转,点击,手势依赖,自定义手势) -- 不错不错

原文网址:http://blog.csdn.net/totogo2010/article/details/8615940 1.UIGestureRecognizer介绍 手势识别在iOS上非常重要,手势操作移动设备的重要特征,极大的增加了移动设备使用便捷性. iOS系统在3.2以后,为方便开发这使用一些常用的手势,提供了UIGestureRecognizer类.手势识别UIGestureRecognizer类是个抽象类,下面的子类是具体的手势,开发这可以直接使用这些手势识别. UITapGest