2

这个网站在解释如何使用 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 的代码会是什么样子。

预先感谢您的帮助。

4

2 回答 2

2

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

[imageView setUserInteractionEnabled:YES];
[imageView addGestureRecognizer:panRecognizer];
于 2011-11-21T13:56:44.840 回答
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 的地方。

希望这可以帮助!

于 2014-06-19T23:19:16.617 回答