如何使用UIPanGestureRecognizer移动2个或更多UIImageViews

时间:2011-11-21 13:45:14

标签: ios uiimageview move pan uipangesturerecognizer

这个网站在解释如何使用UIPanGestureRecognizer移动UIImageView方面非常有帮助,但是我有一个程序,我需要移动(即平移)多个UIImageView并且在我的生活中我可以找不到如何做到这一点的例子。

我知道UIPanGestureRecognizer被分配给UIView,但是我没有能够在UIView中平移任何UIImageView,我只知道使用UIView只挖掘一个UIImageView的代码,如下面的代码所示。

这是我用过的代码。

- (void)viewDidLoad {
UIPanGestureRecognizer *panRecognizer = [[UIPanGestureRecognizer alloc]initWithTarget:self action:@selector(move:)];
[panRecognizer setMinimumNumberOfTouches:1];
[panRecognizer setMaximumNumberOfTouches:1];
[_canvas addGestureRecognizer:panRecognizer];

[super viewDidLoad]; }


-(void)move:(id)sender {
CGPoint translatedPoint = [(UIPanGestureRecognizer*)sender translationInView:_canvas];

if([(UIPanGestureRecognizer*)sender state] == UIGestureRecognizerStateBegan) {
    _firstX = [photoImage center].x;
    _firstY = [photoImage center].y;
}

translatedPoint = CGPointMake(_firstX+translatedPoint.x, _firstY+translatedPoint.y);
[photoImage setCenter:translatedPoint]; }

我可以平移一个名为photoImage的UIImageView,但是知道代码看起来像是要泛泛多个UIImageView。

提前感谢您的帮助。

2 个答案:

答案 0 :(得分:2)

您应该将手势识别器添加到所有图像而不是_canvas。 并且还为这些视图设置userInteractionEnabled为YES

[imageView setUserInteractionEnabled:YES];
[imageView addGestureRecognizer:panRecognizer];

答案 1 :(得分:0)

我刚刚为那些做出这种确切行动的人编写了一个应用程序。基本上,您所要做的就是创建图像视图,然后将它们插入到NSArray中,如下所示:

NSArray *imageViews = @[imageView, imageView2];

然后,使用for循环遍历每个。

for (int i = 0; i < imageViews.count; i++) {
     [imageViews[i] setUserInteractionEnabled:YES];
     [imageViews[i] addGestureRecognizer:panRecognizer];
}

这就是使这项行动有效所需的一切。只需确保上面的代码在viewDidLoad方法中,因为这是您创建panGesture的地方。

希望这有帮助!