Pergunta

Na minha opinião, há uma variedade de UIImageView.Tentei adicionar um gesto panorâmico, meu UIImageView é capaz de se mover.Mas o problema é que depois de inserir o segundo UIImageView no array, consigo mover o UIImageView quando toco no UIImageView anterior.

Como faço para limitar o toque no UIImageView atual?

- (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]];  
}
Foi útil?

Solução

Existe um motivo para você não adicionar o reconhecedor de gestos ao tempImageView antes de adicioná-lo ao currentImageArray?

Nós realmente precisamos ver o código no moveStamp.Com base em como você está fazendo isso, você precisará interrogar o reconhecedor, perguntar quem é sua visão e então mover essa visão.Você está fazendo isso?Não tenho código em mãos, mas é algo como:

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

O panRecognizer apontará apenas para sua visualização, portanto deve funcionar.Eu fiz isso com muitos objetos na tela (veja meu aplicativo QPlus, por exemplo), combinando gestos de panorâmica, pinça e toque e todos eles funcionam bem juntos.

Boa sorte,

Damião

Outras dicas

Talvez você possa usar a tag do UIImageView para resolver seu problema.

- (void)moveStamp:(UIGestureRecognizer *)gesture
{
    NSInteger tag = gesture.view.tag;
    if (tag = currentViewTag) {
        return;
    }
    //...
}
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top