Question

À mon avis, il y a un tableau de UIImageView. J'ai essayé d'ajouter un geste de panoramique, mon uiimage peut se déplacer. Mais le problème est après avoir inséré le deuxième UIImageView dans le tableau, je suis en mesure de déplacer le UIImageView lorsque je touche le précédent UIImageView.

Comment limiter le toucher dans le courant 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]];  
}
Était-ce utile?

La solution

Y a-t-il une raison pour laquelle vous n'avez pas ajouté le reconnaissance des gestes à TempImageView avant de l'ajouter à CurrentImageArray?

Nous avons vraiment besoin de voir le code dans Movestamp. En fonction de la façon dont vous faites cela, vous devrez interroger le reconnaissance, lui demander qui est sa vue, puis déplacer cette vue. Faites-vous cela? Je n'ai pas de code à portée de main mais ça ressemble à quelque chose:

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

Le PanRecogniszer ne fera que pointer sa vue, ce qui devrait fonctionner. Je l'ai fait avec de nombreux objets à l'écran (voir mon application QPLUS par exemple), combinant des gestes de casserole, de pincement et de tapotement et ils jouent tous bien ensemble.

Bonne chance,

Damien

Autres conseils

Vous pouvez peut-être utiliser la balise de UIImageView pour résoudre votre problème.

- (void)moveStamp:(UIGestureRecognizer *)gesture
{
    NSInteger tag = gesture.view.tag;
    if (tag = currentViewTag) {
        return;
    }
    //...
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top