首先照例先创建一个imageView
UIImageView *imageView = [[UIImageView alloc]initWithImage:[UIImage imageNamed:@"Pikachu"]];
imageView.frame = CGRectMake(100, 100, 300, 300);
imageView.userInteractionEnabled=YES;
_imageView = imageView;
[self.view addSubview:imageView];
在创建手势 创建手势的方法是调用父类的 UIGestureRecognizer 的方法 并让这个imgaeView添加一个手势UIPanGestureRecognizer *pan = [[UIPanGestureRecognizer alloc]initWithTarget:self action:@selector(pan:)];
[self.imageView addGestureRecognizer:pan];
可以识别手指的最大数量 设置为3的时候 你一根,两个,三个手指都可以触发这个手势的方法
但是4只 就不行了
pan.maximumNumberOfTouches = 3;
设置为2的时候 最少需要两个手指才能触发这个手势的方法
当设置的值大于maximumNumberOfTouches这个手势的方法将不会被触发
默认是1
pan.minimumNumberOfTouches = 1;
当触发这个手势的时候调用这个方法
-(void)pan:(UIPanGestureRecognizer *)pan{
你手指触摸到那个view的时候 那个点作为原点 坐标是(0,0)
如果你想让你的view跟着手指的移动而移动 那个view这个参数应该是pan.view的superView
CGPoint point1 =[pan translationInView:self.view];
我们打印这个点 你会发现 这个point1是相对于你第一次触摸到view得时候的那个点而言的
NSLog(@"point1 %@",NSStringFromCGPoint(point1));
用这个point2 可以知道在整个坐标轴上是按着那个方向 那个速度滑动的
x代表x轴 y代表y轴 正负代表方向 数值代表大小 多少点每秒的速度移动
CGPoint point2 = [pan velocityInView:self.view];
NSLog(@"point2 %@",NSStringFromCGPoint(point2));
这个states也是父类的属性
switch (pan.state) {
case UIGestureRecognizerStateBegan:
break;
case UIGestureRecognizerStateChanged:{
pan.view.center = CGPointMake(pan.view.center.x+point1.x, pan.view.center.y+point1.y);
这个方法是让拖拽的view跟着手指的滑动而滑动 这个view必须是pan.view.superview
[pan setTranslation:CGPointZero inView:self.view];
}
break;
case UIGestureRecognizerStateEnded:{
}
break;
default:
break;
}