这个网站在解释如何使用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。
提前感谢您的帮助。
答案 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的地方。
希望这有帮助!