手势分为:单击、轻扫、长按、旋转、拖拽、捏合六种,下面就一一给大家说说这六种手势的一些使用方法。


准备工作:先创建一个UIImageView(创建的对象叫做:imageView),方便下面手势的操作。

一、单击手势:UITapGestureRecognizer 


numberOfTapsRequired //点击多少次调用单击的方法

numberOfTouchesRequired        以单击手势为例子,以下手势都按这个套路出牌。 步骤一:创建对应的手势 步骤二:设置手势的属性 步骤三:把手势加入到对应的UIImageView里面去 //单击手势,@selector()是单击后会调用的方法 UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(onClickControlWithTap:)]; tap.numberOfTapsRequired = 1; tap.numberOfTouchesRequired = 1; [imageView addGestureRecognizer:tap]

二、轻扫手势:UISwipeRecognizerdirection//设置轻扫的方向,默认是向右 PS:这里有个坑,如果需要设置多个轻扫方向的话,会用位运算来设置多个方向,这样是不行的。 解决办法:创建多个轻扫手势对象,然后每个轻扫对象设置不同的轻扫方向,然后都加入UIImageView中。
//轻扫手势 UISwipeGestureRecognizer *swipe = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(onClickControlWithSwipe:)]; //允许轻扫的方法(PS:如果这里用分隔符来存放多个方向手势,会出现错误的效果,可以创建多个轻扫手势,然后这些轻扫手势设置不同的轻扫方向,然后全部加入imageView中) swipe.direction = UISwipeGestureRecognizerDirectionRight; swipe.delegate = self; [imageView addGestureRecognizer:swipe]; UISwipeGestureRecognizer *swipe1 = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(onClickControlWithSwipe:)]; swipe.direction = UISwipeGestureRecognizerDirectionLeft; [imageView addGestureRecognizer:swipe1];


三、长按手势:UILongPressRecognizernumberOfTouchesRequired//多少个手指按下触发事件minimumPressDuration//按下多少秒后触发事件 allowableMovement//手指按下后事件响应之前允许手指移动的偏移量

四、旋转手势:UIRotationRecognizer
/**旋转事件*/ -(void)onClickControlWithRotation:(UIRotationGestureRecognizer *)rotation { if (self.btn_pat.alpha == 1) { rotation.view.transform = CGAffineTransformRotate(rotation.view.transform, rotation.rotation); //注意,这里每次旋转后都让旋转弧度归零 /* 因为每次旋转,rotation.rotatin都是累加的 比如说:从0开始旋转,第一次旋转了1,那么结果应该是0+1=1 此时rotation.rotatin = 1 然后再旋转1,那么就是0+1+1,结果应该是2 但是!此时rotation.rotatin = 2(因为是累加的,他是相对于原点移动了2) 这个时候就会产生错误的结果 产生错误结果原因:0+1+2=3 所以就会越转越快了,因为结果错误 解决办法:每次旋转后,让rotation.rotatin归零,不需要他给我累加,移动1就变1 */ rotation.rotation = 0; } }

五、拖拽手势:UIPanGestureRecognizer
/**拖拽事件*/ -(void)onClickControlWithPan:(UIPanGestureRecognizer *)pan { if (self.btn_pat.alpha == 0) { CGPoint point = [pan translationInView:pan.view]; CGPoint temp = pan.view.center; temp.x += point.x; temp.y += point.y; pan.view.center = temp; //和旋转、捏合一样的原理 [pan setTranslation:CGPointZero inView:pan.view]; } }

六、捏合手势:UIPinchGestureRecognizer
/**捏合事件*/ -(void)onClickControlWithPinch:(UIPinchGestureRecognizer *)pinch { pinch.view.transform = CGAffineTransformScale(pinch.view.transform, pinch.scale, pinch.scale); /* 和旋转一样的原理,如果不把捏合程度每次都变为1,也会累乘 */ pinch.scale = 1.0; }


综合了6种手势,我做了一个简单的手势例子。只是我一个脑洞打开的作品而已,小白资历尚浅,还没入门,忘大家轻点喷哦~~~里面有两个UIImageView:长按的时候可以让图片360度旋转,再次长按使图片停止旋转单击的时候可以让图片放大图片放大后,再次点击能让图片回到原来位置(程序有bug,小白资历浅,改不动了,但是变形的图片也能恢复到原状)图片在原来形状时候,不能捏合图片,只能拖拽、放大、旋转图片在图片原来形状的时候,旋转图片后最好不要拖拽图片,因为此时拖拽效果有问题(又是一个bug,又改不动...)  

cordova手势 手势模式使用_图片放大




cordova手势 手势模式使用_归零_02


cordova手势 手势模式使用_cordova手势_03



cordova手势 手势模式使用_图片放大_04


cordova手势 手势模式使用_图片放大_05