城之内

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

1、关于手势识别

Gesture Recognizers是一类手势识别器对象,它可以附属在你指定的View上,并且为其设定指定的手势操作,例如是点击、滑动或者是拖拽。当触控事件 发生时,

设置了Gesture Recognizers的View会先通过识别器去拦截触控事件,如果该触控事件是事先为View设定的触控监听事件,那么Gesture Recognizers将会发送动作消息给目标处理对象,目标处理对象则对这次触控事件进行处理。

在一个view中重写了touchBegin和touchEnd 添加了单击手势识别,那么手势识别会拦截touch消息,touchBegin会打印,但是touchEnd由于被拦截所以没有打印。

添加一个滑动手势识别,同样是有touchBegin和touchMove打印而没有touchEnd。

 

在一个button上也添加一个单击手势,是响应button的点击事件还是响应手势识别事件呢?

button的点击事件其实也是由touchBegin和touchEnd来实现的,根据上个分析,手势识别是会拦截touchBegin和touchEnd的,所以只会响应手势识别的事件。

 

2、关于touch触摸事件的参数

-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event

在屏幕上的每一次动作事件都是一次Touch,在iOS中用UITouch对象表示每一次的触控,多个Touch组成一次Event,用UIEvent来表示一次事件对象。

    NSArray *arrayTouches = [event.allTouches allObjects];

    UITouch *aTouch = [arrayTouches objectAtIndex:0];

    

    UITouch * bTouch = [touches anyObject];

    if (aTouch == bTouch) {

        NSLog(@"same touch");

    }

在touches中的touch对象和在event中的对象是同一个,一般单击的时候用touches 多点触摸的时候用event(按照理解touches是个集合多点触摸的时候应该有两个触摸对象,但是每次都只返回一个)

posted on 2015-09-02 10:21  城之内  阅读(203)  评论(0编辑  收藏  举报