2013-04-22 4 views
-2

У меня есть некоторые вопросы об использовании UIPanGestureRecognizer. Можно ли использовать его при перемещении UIImageView по одному за раз.перемещение UIImageView по одному с использованием UIPanGestureRecognizer

Поток такой. У меня 2 изображения. изображения A и B. Если вы выберете image A, image B не может быть moved?.

Спасибо, ребята.

ответ

0

вы можете установить UIPanGestureRecognizer только для определенного объекта UIImageView.

//set UIPanGestureRecognizer for first image 
    UIPanGestureRecognizer *panRecognizer1 = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(moveImage1:)]; 
    [panRecognizer1 setMinimumNumberOfTouches:1]; 
    [panRecognizer1 setMaximumNumberOfTouches:1]; 
    [panRecognizer1 setDelegate:self]; 
    [img1 addGestureRecognizer:panRecognizer1]; 

    //set UIPanGestureRecognizer for second image 
    UIPanGestureRecognizer *panRecognizer2 = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(moveImage2:)]; 
    [panRecognizer2 setMinimumNumberOfTouches:1]; 
    [panRecognizer2 setMaximumNumberOfTouches:1]; 
    [panRecognizer2 setDelegate:self]; 
    [img1 addGestureRecognizer:panRecognizer2]; 

и написать два способа изображения движущихся

-(void)moveImage1:(id)sender { 
      //coding for moving first image 
      [[[(UITapGestureRecognizer*)sender view] layer] removeAllAnimations]; 
      [viewGesture bringSubviewToFront:[(UIPanGestureRecognizer*)sender view]]; 
      CGPoint translatedPoint = [(UIPanGestureRecognizer*)sender translationInView:self.view]; 

      if([(UIPanGestureRecognizer*)sender state] == UIGestureRecognizerStateBegan) { 
        firstX = [[sender view] center].x; 
        firstY = [[sender view] center].y; 
      } 

      translatedPoint = CGPointMake(firstX+translatedPoint.x, firstY+translatedPoint.y); 
      [[sender view] setCenter:translatedPoint]; 

      if([(UIPanGestureRecognizer*)sender state] == UIGestureRecognizerStateEnded) { 


        CGFloat finalX = translatedPoint.x + (.04*[(UIPanGestureRecognizer*)sender velocityInView:viewGesture].x); 
        CGFloat finalY = translatedPoint.y + (.04*[(UIPanGestureRecognizer*)sender velocityInView:viewGesture].y); 

        if(UIDeviceOrientationIsPortrait([[UIDevice currentDevice] orientation])) { 

          if(finalX < -5000) {    finalX = 0;  } 
          else if(finalX > 5000) {   finalX = 320;  } 

          if(finalY < -5000) {   finalY = 0;    } 
          else if(finalY > 5000) {  finalY = 460;   } 
        } 
        else { 
          if(finalX < -5000) { finalX = 0; } 
          else if(finalX > 5000) { finalX = 320;} 

          if(finalY < -5000) {   finalY = 0;    } 
          else if(finalY > 5000) {  finalY = 460;  } 
        } 

        [UIView beginAnimations:nil context:NULL]; 
        [UIView setAnimationDuration:.35]; 
        [UIView setAnimationCurve:UIViewAnimationCurveEaseOut]; 
        [[sender view] setCenter:CGPointMake(finalX, finalY)]; 
        [UIView commitAnimations]; 
      } 
    } 

    -(void)moveImage2:(id)sender { 
      //coding for moving second image 
    } 

, а также увидеть this с uicollectionview

+0

До сих пор не работает .. может быть, его в образе движения. потому что я использовал UIGestureRecognizerStateBegan:, UIGestureRecognizerStateChanged: UIGestureRecognizerStateEnded :. у вас есть предложения, как его реализовать? .. Спасибо –

+0

см. мой отредактированный ответ ... – DharaParekh

+0

да .. Спасибо .. Я буду работать над этим .. Еще раз спасибо. –

Смежные вопросы