ios手势操作,四个基本事件与六个常用事件
基本事件包括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手势操作,四个基本事件与六个常用事件的更多相关文章
- iOS 手势操作:拖动、捏合、旋转、点按、长按、轻扫、自定义
1.UIGestureRecognizer 介绍 手势识别在 iOS 中非常重要,他极大地提高了移动设备的使用便捷性. iOS 系统在 3.2 以后,他提供了一些常用的手势(UIGestureReco ...
- iOS手势操作,拖动,轻击,捏合,旋转,长按,自定义(http://www.cnblogs.com/huangjianwu/p/4675648.html)
1.UIGestureRecognizer 介绍 手势识别在 iOS 中非常重要,他极大地提高了移动设备的使用便捷性. iOS 系统在 3.2 以后,他提供了一些常用的手势(UIGestureReco ...
- ios手势
iOS 手势操作:拖动.捏合.旋转.点按.长按.轻扫.自定义 大 中 小 1.UIGestureRecognizer 介绍 手势识别在 iOS 中非常重要,他极大地提高了移动设备的使用便捷性. i ...
- ios的手势操作之UIGestureRecognizer浅析
转载地址:http://blog.csdn.net/likendsl/article/details/7554150 每一个手势的实现例子,可参考下面网址:http://www.cnblogs.com ...
- IOS各种手势操作实例
先看下效果 手势相关的介绍 IOS中手势操作一般是 UIGestureRecognizer 类的几个手势子类去实现,一般我们用到的手势就这么5种: 1.点击 UITapGestureRecogniz ...
- 【转】 ios的手势操作之UIGestureRecognizer浅析
一.概述 iPhone中处理触摸屏的操作,在3.2之前是主要使用的是由UIResponder而来的如下4种方式: - (void)touchesBegan:(NSSet *)touches withE ...
- iOS项目之“返回”手势操作相关
在程序中,总会设置“返回”按钮,但不可能在每一个控制器中都去设置一次“返回”按钮,那如何设置全局的“返回”按钮呢? 首先自定义一个导航控制器,在tabBarController中添加子控制器时,使用这 ...
- APP 自动化之手势操作appium提供API详解(四)
一.手势操作1.上下左右滑屏 swipe---滑动 java-client 4.x 是有swipe方法的,可以通过传递坐标信息就可以完成滑动androidDriver.swipe(startx, st ...
- iOS手势UIGestureRecognizer的使用及手势冲突的解决办法【转】
转自:iOS开发中的手势体系——UIGestureRecognizer分析及其子类的使用 关于手势的一篇很好的帖子,转载过来免得丢失.你可能最感兴趣的是手势间的互斥处理,那么就搜索 4.手势间的互斥处 ...
随机推荐
- MySQL学习笔记十六:锁机制
1.数据库锁就是为了保证数据库数据的一致性在一个共享资源被并发访问时使得数据访问顺序化的机制.MySQL数据库的锁机制比较独特,支持不同的存储引擎使用不同的锁机制. 2.MySQL使用了三种类型的锁机 ...
- 多种方法实现Loading(加载)动画效果
当我们ajax提交一个按钮的时候,给那个按钮来个Loading效果会高端很多,体验也会上升个层次. 既能让用户知道正在提交中,也能防止二次提交,好处多多呢.
- 浅谈2D游戏设计模式2- WZ文件详解(UI.WZ)之MapLogin.img(1)
玩过冒险岛的人都知道有一个WZ文件,那么这个WZ文件的内部是怎么样的呢,今天我就带大家一探究竟. 说实在的,我这是第一次接触WZ文件,但是却让我很震撼,为什么很震撼,因为这个居然是用VS2010写的! ...
- JSP自定义tag
前端需要调用后端的配置,想起velocity-tools.然而jsp的话,目前只能想到tag和EL表达式了. Tag相当好写,jsp2.0提供了简化写法: 编写一个java类: public clas ...
- Objective-C快速上手
最近在开发iOS程序,这篇博文的内容是刚学习Objective-C时做的笔记,力图达到用最短的时间了解OC并使用OC.Objective-C是OS X 和 iOS平台上面的主要编程语言,它是C语言的超 ...
- 【Win10开发】Toast通知——后台激活
前篇文章我们写了关于Toast的前台激活,那么接下来就讲一讲它的后台激活.当通知出现时并不会出现app的界面,但是app能在后台获取到通知中的信息. 关于xaml和Toast通知架构我们在这里就不再赘 ...
- Asp.NET MVC 使用 SignalR 实现推送功能一(Hubs 在线聊天室)
简介 ASP .NET SignalR 是一个ASP .NET 下的类库,可以在ASP .NET 的Web项目中实现实时通信.什么是实时通信的Web呢?就是让客户端(Web页面)和服务器端 ...
- swift类、继承、接口
import Foundation class Hello{ var _name:String?="swift global" init(name:String){ //定义类中有 ...
- Create function through MySQLdb
http://stackoverflow.com/questions/745538/create-function-through-mysqldb How can I define a multi-s ...
- zigbee 路由节点丢失后清除 该节点的残余网络信息
清除脱离网络的 路由节点(stale device)的 残留在各表中以AssociationDevList为例的残余信息. 如图所示拓扑结构中: 路由器1脱离网络后,通过协调器按键操作来 清除 协调 ...