0

在我看来,有一个 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]];  
}
4

2 回答 2

0

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

- (void)moveStamp:(UIGestureRecognizer *)gesture
{
    NSInteger tag = gesture.view.tag;
    if (tag = currentViewTag) {
        return;
    }
    //...
}
于 2012-02-28T09:18:50.207 回答
0

在将手势识别器添加到 currentImageArray 之前,是否有理由不将手势识别器添加到 tempImageView?

我们真的需要看看 moveStamp 中的代码。根据您的操作方式,您需要询问识别器,询问它的视图是谁,然后移动该视图。你这样做吗?我没有方便的代码,但它看起来像:

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

panRecognizer 只会指向它的视图,因此它应该可以工作。我已经在屏幕上使用了许多对象(例如,请参阅我的应用程序 QPlus),结合了平移、捏合和点击手势,它们一起玩得很好。

祝你好运,

达米安

于 2012-02-28T09:23:45.283 回答