首先为了防止看我的博客的人刚打开就关闭,所以就先给个手势的例子
UITapGestureRecognizer *tapGesture = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapView:)];
tapGesture.numberOfTapsRequired = 1;
tapGesture.numberOfTouchesRequired = 1;
[self.view addGestureRecognizer:tapGesture];
话说回来,如果直接讲例子以及如何使用函数,没多大意思,而且这种东西就成了记单词,不好不好实在不好,了解下机理,那就不用背单词了,不论怎样变都无所谓了。上个博客讲了事件的传播途径和顺序。那么本次就说说如何在这样的大前提下,做些设置来适应特殊的需求。
首先来讲一下手势的识别和touch事件和处理手势的target之间的关系。如下图:
当用户触摸屏幕,会有touchbegin 事件,然后触摸也可以移动,也会有touchmove,然后离开就会有touchend事件,总的来说touch事件有一下三个阶段:
首先touchbegin ,之后用户移动的的话会进入touchmove,然后手指离开就会有touchend,用户也可以直接离开,就直接冲touchbegin 到tauchend。
无论哪个阶段,ios都会将这些阶段包裹成一个touch事件,先传给手势们,手势会分析这些事件,改变自己的状态,然后发送消息给target,target就会调用处理函数进行事件处理。什么是手势状态改变。看下图
这个图是手势的状态迁移自动机,左边是不连续的单一手势,右边是连续的手势。