基本事件包括begin,canceled,move,ended四项,如果对象的hidden属性为yes,则无效果,hidden属性必须为no;才能使用:

-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{//触碰开始

//    NSLog(@"%ld",[touches count]);

if ([[event allTouches]count]==2) {

NSArray * one =[[event allTouches]allObjects];

_tiLabel.hidden=NO;

_yLabel.hidden=NO;

_tiLabel.center=[[one objectAtIndex:0] locationInView:self.view];

_yLabel.center=[[one objectAtIndex:1] locationInView:self.view];

}

}

-(void)touchesCancelled:(NSSet *)touches withEvent:(UIEvent *)event{//触控发生意外终止是

_tiLabel.hidden=YES;_yLabel.hidden=YES;

}

-(void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event{//触控结束时

_tiLabel.hidden=YES;_yLabel.hidden=YES;

}

-(void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event//触控移动时

{

//    NSLog(@"%ld",[[event allTouches]count]);

if ([[event allTouches]count]==2) {

NSArray * one =[[event allTouches] allObjects];

_tiLabel.hidden=NO;

_yLabel.hidden=NO;

_tiLabel.center=[[one objectAtIndex:0] locationInView:self.view];

_yLabel.center=[[one objectAtIndex:1] locationInView:self.view];

}

}

下面是六大常用事件,包括:点击,拖动,捏合,旋转,长按以及轻扫

  点击事件:顾名思义(UITapGestureRecognizer)

  拖动事件:拖动view内的对象(UIPanGestureRecognizer)

  捏合事件:主要用于操作对象的方法以及缩小(UIPinchGestureRecognizer)

  旋转事件:主要用于控制对象的旋转角度(UIRotationGestureRecognizer)

  长按事件:顾名思义(UILongPressGestureRecognizer)

  清扫事件:主要add在view内,轻扫又可以按照属性分为上下左右四向的清扫(UISwipeGestureRecognizer)

想对某个对象添加六大事件,对象的userinteractionEnable属性必须为yes;否则六大事件会无响应:

- (void)viewDidLoad {

[super viewDidLoad];

UIImage * pic =[UIImage imageNamed:@"rmb.jpg"];

UIImageView * imgView = [[UIImageView alloc]initWithImage:pic];

imgView . backgroundColor = [UIColor blackColor];

imgView.frame =CGRectMake(0, 0, 300, 200);

imgView . userInteractionEnabled=YES;/**********该项设置必须为yes************/

[self.view addSubview:imgView];//imageview对象的代码创建

/*------------------------下面是事件对象的创建以及add操作---------------------*/

//点击

UITapGestureRecognizer * tapGestureRecognizer=[[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(handleTap:)];

tapGestureRecognizer.numberOfTapsRequired=1;

tapGestureRecognizer.numberOfTouchesRequired=1;

  //设置点击事件的单击次数以及手指个数

[imgView addGestureRecognizer:tapGestureRecognizer];

//拖动

UIPanGestureRecognizer * panGestureRecognizer=[[UIPanGestureRecognizer alloc]initWithTarget:self action:@selector(handlePan:)];

[imgView addGestureRecognizer:panGestureRecognizer];

//旋转

UIRotationGestureRecognizer * rotationGestureRecognizer =  [[UIRotationGestureRecognizer alloc]initWithTarget:self action:@selector(handleRotation:)];

[imgView addGestureRecognizer:rotationGestureRecognizer];

//捏合

UIPinchGestureRecognizer * pinchGestureRecognizer= [[UIPinchGestureRecognizer alloc]initWithTarget:self  action:@selector(handlePinch:)];

[imgView addGestureRecognizer:pinchGestureRecognizer];

//长按

UILongPressGestureRecognizer * longGestureRecognizer = [[UILongPressGestureRecognizer alloc]initWithTarget:self action:@selector(handleLong:)];

[imgView addGestureRecognizer:longGestureRecognizer];

//清扫

UISwipeGestureRecognizer * leftGestureRecognizer = [[UISwipeGestureRecognizer alloc]initWithTarget:self action:@selector(handleSwipe:)];

leftGestureRecognizer.direction=UISwipeGestureRecognizerDirectionLeft;//设置清扫的方向

UISwipeGestureRecognizer * rightGestureRecognizer = [[UISwipeGestureRecognizer alloc]initWithTarget:self action:@selector(handleSwipe:)];

rightGestureRecognizer.direction=UISwipeGestureRecognizerDirectionRight;//设置清扫的方向

[self.view addGestureRecognizer:leftGestureRecognizer];

[self.view addGestureRecognizer:rightGestureRecognizer];

}

-(void)handleTap:(UITapGestureRecognizer * )recognizer {

//     NSLog(@"向左清扫");

[[[UIAlertView alloc]initWithTitle:@"提示" message:@"点击事件发生" delegate:self cancelButtonTitle:nil otherButtonTitles:@"ok",nil] show];

}//点击处理

-(void)handlePan:(UIPanGestureRecognizer *) recognizer{

UIImageView * current=(UIImageView *)recognizer.view;//获取imageview对象

CGPoint translaation=[recognizer translationInView:recognizer.view];//获得移动的坐标

current.center=CGPointMake(current.center.x+translaation.x, current.center.y+translaation.y);

//使用原先坐标加上移动后的坐标,赋值给imageview对象

[recognizer setTranslation:CGPointZero inView:self.view];

//清零,防止再次移动

}//拖动处理

-(void)handleRotation:(UIRotationGestureRecognizer *) recognizer{

recognizer . view . transform=CGAffineTransformRotate(recognizer.view.transform, recognizer.rotation);

}//旋转处理

-(void) handlePinch:(UIPinchGestureRecognizer *) recognizer{

recognizer . view.transform = CGAffineTransformScale(recognizer.view.transform, recognizer.scale, recognizer.scale);

recognizer.scale=1;

}//捏合处理

-(void) handleSwipe:(UISwipeGestureRecognizer *) recognizer{

if (recognizer.direction==UISwipeGestureRecognizerDirectionRight) {

NSLog(@"向右清扫");

}else if(recognizer.direction==UISwipeGestureRecognizerDirectionLeft){

NSLog(@"向左清扫");

}

}//清扫处理

-(void) handleLong:(UILongPressGestureRecognizer *) recognizer{

NSLog(@"长按事件");

}//长按处理

ios手势操作,四个基本事件与六个常用事件的更多相关文章

  1. iOS 手势操作:拖动、捏合、旋转、点按、长按、轻扫、自定义

    1.UIGestureRecognizer 介绍 手势识别在 iOS 中非常重要,他极大地提高了移动设备的使用便捷性. iOS 系统在 3.2 以后,他提供了一些常用的手势(UIGestureReco ...

  2. iOS手势操作,拖动,轻击,捏合,旋转,长按,自定义(http://www.cnblogs.com/huangjianwu/p/4675648.html)

    1.UIGestureRecognizer 介绍 手势识别在 iOS 中非常重要,他极大地提高了移动设备的使用便捷性. iOS 系统在 3.2 以后,他提供了一些常用的手势(UIGestureReco ...

  3. ios手势

    iOS 手势操作:拖动.捏合.旋转.点按.长按.轻扫.自定义 大 中 小   1.UIGestureRecognizer 介绍 手势识别在 iOS 中非常重要,他极大地提高了移动设备的使用便捷性. i ...

  4. ios的手势操作之UIGestureRecognizer浅析

    转载地址:http://blog.csdn.net/likendsl/article/details/7554150 每一个手势的实现例子,可参考下面网址:http://www.cnblogs.com ...

  5. IOS各种手势操作实例

    先看下效果 手势相关的介绍 IOS中手势操作一般是 UIGestureRecognizer 类的几个手势子类去实现,一般我们用到的手势就这么5种: 1.点击  UITapGestureRecogniz ...

  6. 【转】 ios的手势操作之UIGestureRecognizer浅析

    一.概述 iPhone中处理触摸屏的操作,在3.2之前是主要使用的是由UIResponder而来的如下4种方式: - (void)touchesBegan:(NSSet *)touches withE ...

  7. iOS项目之“返回”手势操作相关

    在程序中,总会设置“返回”按钮,但不可能在每一个控制器中都去设置一次“返回”按钮,那如何设置全局的“返回”按钮呢? 首先自定义一个导航控制器,在tabBarController中添加子控制器时,使用这 ...

  8. APP 自动化之手势操作appium提供API详解(四)

    一.手势操作1.上下左右滑屏 swipe---滑动 java-client 4.x 是有swipe方法的,可以通过传递坐标信息就可以完成滑动androidDriver.swipe(startx, st ...

  9. iOS手势UIGestureRecognizer的使用及手势冲突的解决办法【转】

    转自:iOS开发中的手势体系——UIGestureRecognizer分析及其子类的使用 关于手势的一篇很好的帖子,转载过来免得丢失.你可能最感兴趣的是手势间的互斥处理,那么就搜索 4.手势间的互斥处 ...

随机推荐

  1. 用Canvas+Javascript FileAPI 实现一个跨平台的图片剪切、滤镜处理、上传下载工具

    直接上代码,其中上传功能需要自己配置允许跨域的文件服务器地址~ 或者将html文件贴到您的站点下同源上传也OK. 支持: 不同尺寸图片获取. 原图缩小放大. 原图移动. 选择框大小改变. 下载选中的区 ...

  2. SqlServer时间戳与普通格式的转换

    /********************************************** 时间戳转换(秒) ******************************************* ...

  3. Java多线程系列--“JUC锁”01之 框架

    本章,我们介绍锁的架构:后面的章节将会对它们逐个进行分析介绍.目录如下:01. Java多线程系列--“JUC锁”01之 框架02. Java多线程系列--“JUC锁”02之 互斥锁Reentrant ...

  4. 安装infer整个过程

    日期:2015-06-26 孟起  15:43:25 大神.. 孟起  15:43:38 我是不是照着这个安装 HelloWorld  15:45:05 直接找二进制文件安卓就行 孟起  15:46: ...

  5. JavaWeb:EL表达式

    JavaWeb:EL表达式 说明 1.Expression Language语言,一种用于JSP文件中的数据访问的语言. 2.能够简化JSP文件中该数据访问的代码,可用来替代传统的基于<%= % ...

  6. spring笔记--事务管理之声明式事务

    事务简介: 事务管理是企业级应用开发中必不可少的技术,主要用来确保数据的完整性和一致性, 事务:就是一系列动作,它们被当作一个独立的工作单元,这些动作要么全部完成,要么全部不起作用. Spring中使 ...

  7. 【JUC】JDK1.8源码分析之ConcurrentSkipListSet(八)

    一.前言 分析完了CopyOnWriteArraySet后,继续分析Set集合在JUC框架下的另一个集合,ConcurrentSkipListSet,ConcurrentSkipListSet一个基于 ...

  8. 3.Java网络编程之IP

    前面两篇博文我们已经简单了解了IP.端口.协议以及两种参考模型,我们现在重新从程序角度来看下这个参考模型. 如果我们从事的是Web网站开发,那么我们应该知道HTML是一种超文本标记语言 (Hyper ...

  9. 新浪云SAE使用入门,教你如何发布自己的网站

    新浪云sae是一个免费的web服务器,SAE的Web服务器采用分布式部署的方式,开发者将代码部署到SAE前端机后,会通过同步的方式,将代码部署到SAE所有的Web服务器.相当于在每一台Web服务器上都 ...

  10. Moon.Orm版本维护及下载(跟踪报道)

    提示:最下面有最新的下载地址  历史记录: ).-- :: 支持Mysql,Sqlserver(点击下载) ).2013年9月14日,代码重构,加入oracle.复合主键功能(点击下载) )--,为d ...