Массив жеста UIImageView

На мой взгляд, есть массив 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]];  
}

2 ответа

Решение

Есть ли причина, по которой вы не добавляете распознаватель жестов в tempImageView перед добавлением его в currentImageArray?

Нам действительно нужно увидеть код в 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;
    }
    //...
}
Другие вопросы по тегам