在我的视图中,有一系列UIImageView。我试图添加平移手势,我的UIImageView能够移动。但问题是在我将第二个UIImageView插入阵列之后,我能够在触摸上一个UIImageView时移动UIImageView。

如何限制当前UIImageView中的触摸?

- (void)addNewImageToArray: (UIImage *)inImage
{
    UIImageView *tempImageView = [[UIImageView alloc]initWithImage:inImage];
    tempImageView.userInteractionEnabled = YES;
    tempImageView.center = self.vwDesktop.center;

    CALayer * l = [tempImageView layer];
    [l setBorderWidth:2.0];
    [l setBorderColor:[[UIColor grayColor] CGColor]];

    tempImageView.frame = CGRectMake(0,0,inImage.size.width,inImage.size.height);    

    [currentImageArray addObject:tempImageView];

    UIPanGestureRecognizer *stampPanGesture = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(moveStamp:)];
    [stampPanGesture setMinimumNumberOfTouches:1];
    [stampPanGesture setMaximumNumberOfTouches:1];
    [[currentImageArray objectAtIndex:currentImageArray.count - 1] addGestureRecognizer:stampPanGesture]; 

    [self.vwDesktop addSubview:[currentImageArray objectAtIndex:currentImageArray.count - 1]];  
}
.

有帮助吗?

解决方案

在添加到CurrentimageArray之前,您是否有一个原因您不会将手势识别器添加到TempImageView之前?

我们真的需要在MoveStamp中看到代码。基于您的方式,您需要询问识别器,请询问它的视图,然后移动该视图。你在这样做吗?我没有代码方便,但它看起来像:

- (void)moveStamp:(UIPanGestureRecognizer*)panRecognizer {
    UIView *viewToMove = panRecognizer.view;
    // move the view around
}
.

Panrecognizer只会指向它的视图,以便它应该工作。我已经用屏幕上的许多对象(例如,请参阅我的应用程序qplus),组合平移,捏和敲击手势,它们都在一起玩得很好。

祝你好运,

damien

其他提示

也许您可以使用UIImageView的标签来解决您的问题。

- (void)moveStamp:(UIGestureRecognizer *)gesture
{
    NSInteger tag = gesture.view.tag;
    if (tag = currentViewTag) {
        return;
    }
    //...
}
.

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top