基本信息
文件名称:iOS之识别手势gesture的介绍.docx
文件大小:17.52 KB
总页数:5 页
更新时间:2025-05-22
总字数:约4.47千字
文档摘要

iOS之识别手势gesture的介绍

在iOS中,你可以使用系统内置的手势识别(GestureRecognizer),也可以创建自己的手势.GestureRecognizer将低级别的转换为高级别的执行行为,是你绑定到view的对象,当发生手势,绑定到的view对象会响应,它确定这个动作是否对应一个特定的手势(swipe,pinch,pan,rotation).如果它能识别这个手势,那么就会向绑定它的view发送消息,如下图

UIKit框架提供了一些预定义的GestureRecognizer.包含下列手势

UITapGestureRecognizer敲击手势(单击和双击)

UIPanGestureRecognizer(拖动手势)

UIPinchGestureRecognizer(缩放手势)

UISwipeGestureRecognizer(擦碰手势)

UIRotationGestureRecognizer(旋转手势)

UILongPressGestureRecognizer(长按手势)

如果你想让你的应用程序来识别一个独特的手势,如选择目录或纠结的运动,你可以创建自己的自定义GestureRecognizer,将在下篇介绍

将特定的手势和view相关联

每一个特定的手势必须关联到view对象中才会有作用,一个view对象可以关联多个不同的特定手势,但是每一个特定的手势只能与一个view相关联。当用户触摸了view,这个GestureRecognizer就会接受到消息,它可以响应特定的触摸事件。

与特定view关联

创建GestureRecognizer实例

addGestureRecognizer

实现处理手势的方法

可以使用removeGestureRecognizer:来移除手势。

_panGestureRecognizer=[[UIPanGestureRecognizeralloc]initWithTarget:selfaction:@selector(handlerPanGesture:)];

_panGestureRecognizer.delegate=self;

_panGestureRecognizer.maximumNumberOfTouches=2;

_panGestureRecognizer.minimumNumberOfTouches=2;

[self.viewaddGestureRecognizer:_panGestureRecognizer];

-(void)handlerPanGesture:(UIPanGestureRecognizer*)recognizer

if((recognizer.state==UIGestureRecognizerStateBegan)||

(recognizer.state==UIGestureRecognizerStateChanged))

CGPointoffset=[recognizertranslationInView:self.view];

CGRectframe=self.rightViewController.view.frame;

frame.origin.x+=offset.x;

if(frame.origin.x=0frame.origin.x

手势识别状态

Gesturerecognizers从一个状态转到另一状态(state)。对于每个状态,根据它们是否符合特定条件来决定时候可以移动到下一个状态。它们分析多点触摸。是否识别失败。未能识别手势意味着state转换失败。UIGestureRecognizerStateFAIled。详见UIGestureRecognizerState枚举

typedefNS_ENUM(NSInteger,UIGestureRecognizerState){

UIGestureRecognizerStatePossible,//therecognizerhasnotyetrecognizeditsgesture,butmaybeevaluatingtouchevents.thisisthedefaultstate

UIGestureRecognizerStateBegan,//therecognizerhasreceivedtouchesreco