【问题标题】:How to use UIPanGestureRecognizer to move 2 or more UIImageViews如何使用 UIPanGestureRecognizer 移动 2 个或更多 UIImageViews
【发布时间】:2011-11-21 13:45:14
【问题描述】:

在解释如何使用 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 的代码是什么样的。

提前感谢您的帮助。

【问题讨论】:

    标签: ios uiimageview move pan uipangesturerecognizer


    【解决方案1】:

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

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

    【讨论】:

    • 感谢您的帮助@Yadyn。这是修改后的代码,但只有 photoImage2 UIImageView 会平移。 - (void)viewDidLoad { ... [photoImage setUserInteractionEnabled:YES]; [photoImage2 setUserInteractionEnabled:YES]; [photoImage addGestureRecognizer:panRecognizer]; [photoImage2 addGestureRecognizer:panRecognizer]; ... } -(void)move:(id)sender { ... _firstX = [(UIPanGestureRecognizer*)sender locationInView:self.view].x; _firstY = [(UIPanGestureRecognizer*)sender locationInView:self.view].y; } ... [(UIPanGestureRecognizer*)sender view].center = translatePoint; }
    • UIPanGestureRecognizer *recognizer = (UIPanGestureRecognizer *)sender; UIView *selectedView = [识别器视图]; CGPoint point = [识别器translationInView:self.view]; if ([识别器状态] == UIGestureRecognizerStateBegan) { firstX = selectedView.center.x; firstY = selectedView.center.y; } 点 = CGPointMake(firstX+point.x, firstY+point.y); [selectedView setCenter:point]; if ([recognizer state] == UIGestureRecognizerStateEnded) { [selectedView setCenter:point];我使用这段代码,无论有多少视图,它对我来说都很好
    【解决方案2】:

    我刚刚为执行该操作的人编写了一个应用程序。基本上,您所要做的就是创建图像视图,并将它们插入到 NSArray 中,如下所示:

    NSArray *imageViews = @[imageView, imageView2];
    

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

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

    这就是执行此操作所需的全部内容。只需确保上面的代码在您的 viewDidLoad 方法中,因为这是您创建 panGesture 的地方。

    希望这会有所帮助!

    【讨论】:

      猜你喜欢
      • 2011-04-26
      • 1970-01-01
      • 1970-01-01
      • 2011-10-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多