iOS开发中手势识别

iOS开发中手势识别有六种:

轻击手势(TapGestureRecognizer),

轻扫手势(SwipeGestureRecognizer),

长按手势(LongPressGestureRecognizer),

拖动手势(PanGestureRecognizer),

捏合手势(PinchGestureRecognizer),

旋转手势(RotationGestureRecognizer),

1,轻击手势(TapGestureRecognizer)

UITapGestureRecognizer*tapGesture=[[UITapGestureRecognizeralloc]initWithTarget:selfaction:@selector(tapGesture:)];

tapGesture.numberOfTapsRequired=1;//点击次数

tapGesture.numberOfTouchesRequired=1;//点击手指数

[self.viewaddGestureRecognizer:tapGesture];

//轻击手势触发方法

-(void)tapGesture:(UITapGestureRecognizer*)sender

{

//yourcode

}

2,长按手势(LongPressGestureRecognizer)

UILongPressGestureRecognizer*longPressGesture=[[UILongPressGestureRecognizeralloc]initWithTarget:selfaction:@selector(longPressGesture:)];

//设置长按时间

longPressGesture.minimumPressDuration=0.5;

[self.viewaddGestureRecognizer:longPressGesture];

//长按手势触发方法

-(void)longPressGesture:(id)sender

{

UILongPressGestureRecognizer*longPress=sender;

if(longPress.state==UIGestureRecognizerStateBegan)

{

//yourcode

}

}

说明:长按手势的常用状态如下

开始:UIGestureRecognizerStateBegan

改变:UIGestureRecognizerStateChanged

结束:UIGestureRecognizerStateEnded

取消:UIGestureRecognizerStateCancelled

失败:UIGestureRecognizerStateFailed

3,轻扫手势(SwipeGestureRecognizer)

UISwipeGestureRecognizer*swipeGesture=[[UISwipeGestureRecognizeralloc]initWithTarget:selfaction:@selector(swipeGesture:)];

//设置轻扫的方向

swipeGesture.direction=UISwipeGestureRecognizerDirectionRight;//向右

[self.viewaddGestureRecognizer:swipeGesture];

UISwipeGestureRecognizer*swipeGestureLeft=[[UISwipeGestureRecognizeralloc]initWithTarget:selfaction:@selector(swipeGesture:)];

//设置轻扫的方向

swipeGestureLeft.direction=UISwipeGestureRecognizerDirectionLeft;//向左

[self.viewaddGestureRecognizer:swipeGestureLeft];

//轻扫手势触发方法

-(void)swipeGesture:(id)sender

{

UISwipeGestureRecognizer*swipe=sender;

if(swipe.direction==UISwipeGestureRecognizerDirectionLeft)

{

//向左轻扫

}

if(swipe.direction==UISwipeGestureRecognizerDirectionRight)

{

//向右轻扫

}

}

4,捏合手势(PinchGestureRecognizer)

UIPinchGestureRecognizer*pinchGesture=[[UIPinchGestureRecognizeralloc]initWithTarget:selfaction:@selector(pinchGesture:)];

[self.viewaddGestureRecognizer:pinchGesture];

////捏合手势触发方法

-(void)pinchGesture:(id)sender

{

UIPinchGestureRecognizer*gesture=sender;

//手势改变时

if(gesture.state==UIGestureRecognizerStateChanged)

{

//捏合手势中scale属性记录的缩放比例

_imageView.transform=CGAffineTransformMakeScale(gesture.scale,gesture.scale);

}

//结束后恢复

if(gesture.state==UIGestureRecognizerStateEnded)

{

[UIViewanimateWithDuration:0.5animations:^{

_imageView.transform=CGAffineTransformIdentity;//取消一切形变

}];

}

}

5,拖动手势(PanGestureRecognizer)

UIPanGestureRecognizer*panGesture=[[UIPanGestureRecognizeralloc]initWithTarget:selfaction:@selector(panGesture:)];

[self.viewaddGestureRecognizer:panGesture];

//拖动手势触发方法

-(void)panGesture:(id)sender

{

UIPanGestureRecognizer*panGesture=sender;

CGPointmovePoint=[panGesturetranslationInView:self.view];

//yourcode

}

6,旋转手势(RotationGestureRecognizer)

UIRotationGestureRecognizer*rotationGesture=[[UIRotationGestureRecognizeralloc]initWithTarget:selfaction:@selector(rotationGesture:)];

[self.viewaddGestureRecognizer:rotationGesture];

//旋转手势触发方法

-(void)rotationGesture:(id)sender

{

UIRotationGestureRecognizer*gesture=sender;

if(gesture.state==UIGestureRecognizerStateChanged)

{

_imageView.transform=CGAffineTransformMakeRotation(gesture.rotation);

}

if(gesture.state==UIGestureRecognizerStateEnded)

{

[UIViewanimateWithDuration:1animations:^{

_imageView.transform=CGAffineTransformIdentity;//取消形变

}];

}

}

时间: 2024-09-23 05:37:44

iOS开发中手势识别的相关文章

iOS开发之手势识别

感觉有必要把iOS开发中的手势识别做一个小小的总结.在上一篇iOS开发之自定义表情键盘(组件封装与自动布局)博客中用到了一个轻击手势,就是在轻击TextView时从表情键盘回到系统键盘,在TextView中的手是用storyboard添加的.下面会先给出如何用storyboard给相应的控件添加手势,然后在用纯代码的方式给我们的控件添加手势,手势的用法比较简单.和button的用法类似,也是目标动作回调,话不多说,切入今天的正题.总共有六种手势识别:轻击手势(TapGestureRecogniz

iOS开发中的手势体系——UIGestureRecognizer分析及其子类的使用

iOS开发中的手势体系--UIGestureRecognizer分析及其子类的使用 一.引言         在iOS系统中,手势是进行用户交互的重要方式,通过UIGestureRecognizer类,我们可以轻松的创建出各种手势应用于app中.关于UIGestureRecognizer类,是对iOS中的事件传递机制面向应用的封装,将手势消息的传递抽象为了对象.有关消息传递的一些讨论,在前面的博客中有提到: iOS事件响应控制:http://my.oschina.net/u/2340880/bl

iOS开发之手势识别实例_IOS

感觉有必要把iOS开发中的手势识别做一个小小的总结.下面会先给出如何用storyboard给相应的控件添加手势,然后在用纯代码的方式给我们的控件添加手势,手势的用法比较简单.和button的用法类似,也是目标 动作回调,话不多说,切入今天的正题. 总共有六种手势识别:轻击手势(TapGestureRecognizer),轻扫手势 (SwipeGestureRecognizer), 长按手势(LongPressGestureRecognizer),  拖动手势(PanGestureRecogniz

iOS开发中常用的数学函数

iOS开发中常用的数学函数   /*---- 常用数学公式 ----*/ //指数运算 3^2 3^3 NSLog(@"结果 %.f", pow(3,2)); //result 9 NSLog(@"结果 %.f", pow(3,3)); //result 27 //开平方运算 NSLog(@"结果 %.f", sqrt(16)); //result 4 NSLog(@"结果 %.f", sqrt(81)); //result

ios开发中uiscrollview里嵌套一个uiscrollview

问题描述 ios开发中uiscrollview里嵌套一个uiscrollview ios开发中uiscrollview里嵌套一个uiscrollview 其中小得scrollview是一个用于放滚动图片的.大得scrollview是用于整个view滚动的..其中还有很多别的view譬如imageview等,现在遇到这样的问题:我滚动大得scrollview,放滚动图片的scroll不跟着动,就一直悬在固定的位置.求解 急呀 解决方案 如果小的uiscrollview是作为subview添加到外部

iOS开发中的单元测试(二) 让断言活泼起来的匹配引擎

上一篇文章简单介绍了OCUnit和GHUnit两款iOS开发中较为常见的单元测试框架,本文进一步介绍单元测试 中的另一利器--匹配引擎(Matcher Engine).匹配引擎可以替代断言方法,配合单元测试引擎使用,测试 用例可以更多样化,更细致. 传统断言提供的方法数量和功能都有限,以导读中提到的两款框架为例 ,即使是断言相对丰富的GHUnit也只是提供了38种断言方法,范围仅涵盖了逻辑比较,异常和出错等少数几方 面,仍然很单一.而使用匹配引擎代替断言,可能性就大大丰富了,除了普通断言支持的规

iOS开发中的单元测试(一) 对比OCUnit和GHUnit

本文不讨论单元测试是什么,或者它之于一个工程的利弊,我认为单元测试是一个开发者保证产出代码质 量的有效工具.本文从使用者的角度对比当下比较流行的两款单元测试框架,给大家提供一些选用建议.如果 你还不甚了解单元测试在工程中所起到的作用,或者还不知道TDD的开发模式,可参考:Test-Driven Development和Unit Testing. 本文对比两个iOS开发中常见的单元测试框架:OCUnit,被官方集成进XCode 4.x版本中:GHUnit,被推荐 最多的测试框架,带GUI界面.初窥

ios开发中时间转换的方法集锦

  这篇文章主要介绍了ios开发中时间转换的方法集锦,需要的朋友可以参考下 在开发iOS程序时,有时候需要将时间格式调整成自己希望的格式,这个时候我们可以用NSDateFormatter类来处理. 例如: //实例化一个NSDateFormatter对象 NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; //设定时间格式,这里可以设置成自己需要的格式 [dateFormatter setDateFormat:@"yy

IOS开发中取消文本框输入时的小键盘

  这篇文章主要介绍了IOS开发中取消文本框输入时的小键盘,需要的朋友可以参考下 首先在Interface Builder中选择TextFields,然后在Text Field Attributes中找到Text Input Traits,选择Return Key为done.OK 定义方法 - (IBAction) textFieldDoneEditing:(id)sender; //按下Done键关闭键盘 实现方法 代码如下: //按完Done键以后关闭键盘 - (IBAction) text