博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
手势识别之轻点
阅读量:6501 次
发布时间:2019-06-24

本文共 3454 字,大约阅读时间需要 11 分钟。

#import "ViewController.h"@interface ViewController ()@property(nonatomic,strong)UIImageView *ImgView;@end@implementation ViewController - (void)viewDidLoad {    [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

转载地址:http://fyxyo.baihongyu.com/

你可能感兴趣的文章
yii1框架,事务使用方法
查看>>
css3箭头效果
查看>>
Python学习笔记【第一篇】:认识python和基础知识
查看>>
MathType在手,公式不求人!
查看>>
测试用例设计
查看>>
三层架构
查看>>
Python变量类型(l整型,长整形,浮点型,复数,列表,元组,字典)学习
查看>>
解决方案(.sln)文件
查看>>
理解cookie和session机制
查看>>
【Treap】bzoj1588-HNOI2002营业额统计
查看>>
第六周作业
查看>>
利用ZYNQ SOC快速打开算法验证通路(5)——system generator算法IP导入IP integrator
查看>>
指针和引用的区别
查看>>
转:strcat与strcpy与strcmp与strlen
查看>>
运行PHP出现No input file specified错误解决办法
查看>>
【重建】从FJOI2016一试谈起
查看>>
selenium之frame操作
查看>>
php 引入其他文件中的变量
查看>>
MYSQL体系结构-来自期刊
查看>>
mysql的基本知识
查看>>