2012-10-29 4 views
0

J'ai une vue déroulante avec un nombre fixe d'images miniatures ajoutées comme sous-vue. Je veux déplacer ces images le long du toucher du rectangle dans une autre vue. Je suis capable de déplacer l'image le long de scrollview (c.-à-d., Le long de la même vue) mais pas capable de se déplacer à travers une autre vue. Maintenant je change le centre de l'image en fonction de la position tactile. Lorsque le point de contact augmente au-delà du cadre de défilement, l'image disparaît. C'est mon problèmeDéplacez l'image avec le toucher

- (void) touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event { 
     UITouch *touch = [[event allTouches] anyObject]; 

     CGPoint location = [touch locationInView: self]; 
     NSLog(@"%f,%f",location.x,location.y); 
     touch.view.center = location; 

    } 

Toute solution à ce problème sera une aide précieuse pour moi !!!

S'il vous plaît se référer l'image pour plus de détails enter image description here

+0

'UIPanGestureRecognizer' –

+0

Donnez du code. Comment déplacez-vous les images jusqu'à présent? – rdurand

+0

@rdurand ajouté le code s'il vous plaît vérifier –

Répondre

1

Voici ce que je ferais:

Ajouter un panGestureRecognizer à chaque image, la méthode handlePan: suivante comme son action. Vous devez toujours trouver comment obtenir le bon imageView (myImageView), mais cela fera votre image suivre votre doigt.

- (IBAction)handlePan:(UIPanGestureRecognizer *)recognizer { 

    // Find the correct image you're dragging 
    // UIImageView *myImageview = ... 

    CGPoint translation = [recognizer translationInView:self.view]; 

    if (recognizer.state == UIGestureRecognizerStateEnded) { 
     // What to do when you start the gesture 
     // You may also define myImageView here 
     // (if so, make sure you put it in @interface, 
     // because this method will be called multiple times, 
     // but you will enter this "if" only when you start the touch) 
    } 

    // Keep your image in the screen 
    if (myImageView.frame.origin.x + translation.x >= 0.0f && 
     myImageView.frame.origin.x + myImageView.frame.size.width + translation.x <= 320.0f && 
     myImageView.frame.origin.y + translation.y >= 0.0f && 
     myImageView.frame.origin.y + myImageView.frame.size.height + translation.y <= 480.0f) { 

     myImageView.center = CGPointMake(myImageView.center.x + translation.x, 
             myImageView.center.y + translation.y); 

    } 

    if (recognizer.state == UIGestureRecognizerStateEnded) { 
     // What to do when you remove your finger from the screen 
    } 

    [recognizer setTranslation:CGPointMake(0, 0) inView:self.view]; 
}