手势识别之轻点
识别 手势
2023-09-14 08:57:58 时间
[super viewDidLoad];
self.ImgView=[[UIImageView alloc]initWithImage:[UIImage imageNamed:@"img.jpg"]];
self.ImgView.tag=10001;
self.ImgView.frame=CGRectMake(100, 100, 100, 100);
//UIImageView默认不支持用户交互 改为YES
self.ImgView.userInteractionEnabled=YES;
//Tap、pinch,pan、swipe只是一个简单的单个触摸,为了实现多触摸,需要设置multipleTouchEnabled支持多点触摸
self.ImgView.multipleTouchEnabled=YES;
//实例化识别对象 并注册监听方法
UITapGestureRecognizer *singletap=[[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(signaltap:)];
[self.ImgView addGestureRecognizer:singletap];
//需要点击的次数 默认1
singletap.numberOfTapsRequired=1;
//同时点击的手指个数 默认1 在模拟器中模拟不出多个手指测试需要在真机
singletap.numberOfTouchesRequired=2;
//设置代理
singletap.delegate=self;
[self.view addSubview:self.ImgView];
UITapGestureRecognizer *doubletap=[[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(signaltap:)];
doubletap.numberOfTapsRequired=2;
doubletap.numberOfTouchesRequired=1;
doubletap.delegate=self;
[self.ImgView addGestureRecognizer:doubletap];
//两个手指点击一次和一个手指点击两个用户点击不清楚可能混淆
[singletap requireGestureRecognizerToFail:doubletap];
-(void)signaltap:(UIGestureRecognizer *)gestureRecognizer
//获取点击的视图
UIView *view=gestureRecognizer.view;
NSLog(@"%ld",view.tag);
// 状态是枚举类型
// UIGestureRecognizerStatePossible,
// UIGestureRecognizerStateBegan,
// UIGestureRecognizerStateChanged,
// UIGestureRecognizerStateEnded,正常情况只响应这一个
// UIGestureRecognizerStateCancelled,
// UIGestureRecognizerStateFailed,
// UIGestureRecognizerStateRecognized = UIGestureRecognizerStateEnded
NSLog(@"手势状态:%ld",gestureRecognizer.state);
NSLog(@"轻点");
//询问一个手势接收者是否应该开始执行一个触摸接收事件
- (BOOL)gestureRecognizerShouldBegin:(UIGestureRecognizer *)gestureRecognizer
//指定响应的区域
CGPoint currentPoint=[gestureRecognizer locationInView:self.view];
if (CGRectContainsPoint(CGRectMake(100, 100, 50, 50), currentPoint)) {
return YES;
return NO;
//询问delegate,两个手势是否同时接收消息,返回YES同时接收。返回NO,不同时接收,默认NO
//也就是说两个gesture recognizers的delegate方法只要任意一个返回YES,则这两个就可以同时识别
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer
NSLog(@"识别");
return NO;
//在一个手势生命周期的早期,当一个视图里面所有的手势识别都仍处理Possible状态,那么在iOS 7中gestureRecognizer:shouldRequireFailureOfGestureRecognizer: 和 gestureRecognizer:shouldBeRequiredToFailByGestureRecognizer: 消息会发送给这所有的手势识别的委托,来配对这个视图里的手势识别。返回YES来对这个两个传入的手势进行优先排序,就是说知道另一个手势识别失败时,这个手势识别才能成功。本质上,这些委托方法会把返回的结果作为一次和永久的决定,从而对每个手势发生时多出实时决策。(这个还不太理解)
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRequireFailureOfGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer
return NO;
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldBeRequiredToFailByGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer
return NO;
//在toucheBegan这个方法之前,也就是在手势状态为began之前.此方法在window对象在有触摸事件发生时,调用gesture recognizer的touchesBegan:withEvent:方法之前调用,如果返回NO,则gesture recognizer不会看到此触摸事件。(默认情况下为YES).
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch
return YES;
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
@end
Gestures(手势) 如果你的手机是Android 4.x的原生Android系统的话,你可能可以在你的手机或者平板上看到谷歌提供的一个Gesture Builder的APP,该应用允许用户以类似于涂鸦的方式绘制一个手写符号,使之对应一个字符串名称!当然,没有这样的手机也没关系,我们有模拟器嘛,自己开个4.0的系统试试就知道了,另外,我们可以到\mmt\sdcard\gestures获取到保存手势的文件!好了,唠唠叨叨那么多,开始讲正题吧!
废话不多说,看下面的动图,和百度的还是有点点差别,我也不修改了,很简单,我实在是没有多余的时间,还要学习其他的东西,累啊,(复杂的动态View,可以使用SurfaceView,效率更高,我这里就简单使用View了)
社会主义 从.Net到iOS,在撸的道路上越走越远,工作之余经营着博客园http://www.cnblogs.com/5ishare,欢迎小伙伴(妹子更好)一起交流,谈谈人生理想。作为经常从网上索取免费资料的一员,要有回报回报的思想,也让更多的人少走弯路.
Gestures(手势) 如果你的手机是Android 4.x的原生Android系统的话,你可能可以在你的手机或者平板上看到谷歌提供的一个Gesture Builder的APP,该应用允许用户以类似于涂鸦的方式绘制一个手写符号,使之对应一个字符串名称!当然,没有这样的手机也没关系,我们有模拟器嘛,自己开个4.0的系统试试就知道了,另外,我们可以到\mmt\sdcard\gestures获取到保存手势的文件!好了,唠唠叨叨那么多,开始讲正题吧!
废话不多说,看下面的动图,和百度的还是有点点差别,我也不修改了,很简单,我实在是没有多余的时间,还要学习其他的东西,累啊,(复杂的动态View,可以使用SurfaceView,效率更高,我这里就简单使用View了)
社会主义 从.Net到iOS,在撸的道路上越走越远,工作之余经营着博客园http://www.cnblogs.com/5ishare,欢迎小伙伴(妹子更好)一起交流,谈谈人生理想。作为经常从网上索取免费资料的一员,要有回报回报的思想,也让更多的人少走弯路.
相关文章
- 手势识别控制pygame精灵
- 手势识别之平移、缩放、长按、旋转、滑动
- android 手势识别学习
- 仿百度壁纸客户端(五)——实现搜索动画GestureDetector手势识别,动态更新搜索关键字
- Java 理论和实践: 了解泛型 识别和避免学习使用泛型过程中的陷阱
- 机器换人!浙江高院庭审引入语音识别技术!
- Atitit 在线机器人 自动化技术一览 目录 1. 俩个要点1 1.1. 识别控件(对话框 按钮 列表等)1 1.2. Dom控件操作1 1.3. 鼠标键盘操作 api1 2. 可以使用
- 【深度学习】基于Hough变化的答题卡识别(Matlab代码实现)
- 【图像处理】基于MATLAB的车位识别应用程序
- CVPR2021 行人重识别/Person Re-identification 论文+开源代码汇总
- 【Recorder.js+百度语音识别】全栈方案技术细节
- 基于ResNet18深度学习网络的mnist手写数字数据库识别matlab仿真
- m基于CNN卷积神经网络和GEI步态能量图的步态识别算法MATLAB仿真
- 【Android 内存优化】自定义组件长图组件 ( 长图滚动区域解码 | 手势识别 GestureDetector | 滑动计算类 Scroller | 代码示例 )
- 3D物体识别的如果检验
- 使用wafw00f 识别网站使用的waf类型
- Opencv项目实战:21 美国ASL手势识别
- OpenCV实例(二)手势识别
- 动作识别0-02:mmaction2(SlowFast)-官方数据训练测试-ucf101
- 行人重识别02-04:fast-reid(BoT)-pytorch编程规范(fast-reid为例)1-hooks机制了解
- DL之CNN:利用卷积神经网络算法(2→2,基于Keras的API-Functional)利用MNIST(手写数字图片识别)数据集实现多分类预测
- 【Transformers】第 4 章 :多语言命名实体识别
- 【NLP】自然语言处理学习笔记(一)语音识别