2013-07-31 20 views
1

我想與同UIPanGestureRecognizer移動兩幅圖像, 我能夠移動第一圖像,但只要我嘗試移動第二像第一個進入兩個圖像回到原來的位置。我想讓第一張圖片在更改位置後保留它。不能移動使用uipangesturerecogniser

-(void) viewWillAppear:(BOOL)animated 
{ 
    UIPanGestureRecognizer *pan = [[UIPanGestureRecognizer alloc] initWithTarget:self  action:@selector(handlePanSuper:)]; 
    [self.view addGestureRecognizer:pan]; 
} 

- (void)handlePanSuper:(UIPanGestureRecognizer *)sender 
    { 
    static UIImageView *viewToMove; 
    static CGPoint originalCenter; 

    if (sender.state == UIGestureRecognizerStateBegan) 
    { 
    CGPoint location = [sender locationInView:self.view]; 

    if (CGRectContainsPoint(self.imageView.frame, location)) 
    { 
     viewToMove = imageView; 
     originalCenter = viewToMove.center; 
    } 
    else if (CGRectContainsPoint(self.image2.frame, location)) 
    { 
     viewToMove = image2; 
     originalCenter = viewToMove.center; 
    } 
    else 
    { 
     viewToMove = nil; 
    } 

    if (viewToMove) 
    { 

     viewToMove.alpha = 0.8; 
     [viewToMove.superview bringSubviewToFront:viewToMove]; 
     NSLog(@"hi i am being touched."); 
    } 
} 
if (sender.state == UIGestureRecognizerStateChanged && viewToMove != nil) 
    { 
    CGPoint translation = [sender translationInView:self.view]; 
    viewToMove.center = CGPointMake(originalCenter.x + translation.x, originalCenter.y +          translation.y); 


} 
else if ((sender.state == UIGestureRecognizerStateEnded || 
      sender.state == UIGestureRecognizerStateFailed || 
      sender.state == UIGestureRecognizerStateCancelled) && viewToMove != nil) 
{ 
    // do whatever post dragging you want, e.g. 
    // snap the piece into place 

     // CGPoint center = viewToMove.center; 
     //viewToMove.center = center; 

     viewToMove.alpha = 1.0; 

     viewToMove = nil; 
    } 
} 
+0

請給予一些反饋,如果你嘗試了一些東西 –

回答

0

您正在將您的手勢識別器設置在您的superView中。爲什麼?您可以設置它,你試圖移動,它更容易和不太可能我編輯你的代碼怪異的行爲的意見裏面,見下文(未測試)

-(void) viewWillAppear:(BOOL)animated 
{ 
    UIPanGestureRecognizer *pan = [[UIPanGestureRecognizer alloc] initWithTarget:self  action:@selector(handlePanSuper:)]; 
    self.imageView.userInteractionEnabled = self.image2.userInteractionEnabled = YES; 
    [self.imageView addGestureRecognizer:pan]; 
    [self.image2 addGestureRecognizer:pan]; 
} 

- (void)handlePanSuper:(UIPanGestureRecognizer *)sender 
{ 
    UIImageView *viewToMove = (UIImageView*)sender.view; 
    CGPoint originalCenter = viewToMove.center; 

    if (sender.state == UIGestureRecognizerStateBegan) 
    { 
     CGPoint location = [sender locationInView:self.view]; 

     viewToMove.alpha = 0.8; 
     [viewToMove.superview bringSubviewToFront:viewToMove]; 
     NSLog(@"hi i am being touched."); 

    } 
    else if (sender.state == UIGestureRecognizerStateChanged) 
    { 
     CGPoint translation = [sender translationInView:self.view]; 
     viewToMove.center = CGPointMake(originalCenter.x + translation.x, originalCenter.y +          translation.y); 

    } 
    else if ((sender.state == UIGestureRecognizerStateEnded || 
      sender.state == UIGestureRecognizerStateFailed || 
      sender.state == UIGestureRecognizerStateCancelled)) 
    { 
    // do whatever post dragging you want, e.g. 
    // snap the piece into place 

     // CGPoint center = viewToMove.center; 
     //viewToMove.center = center; 

     viewToMove.alpha = 1.0; 
     viewToMove = nil; 
    } 
} 

請試試這個,讓我知道,如果工作。

+0

嘿人,我把這一行[發件人setTranslation:CGPointMake(0,0)inView:self.view]; ,但現在第一個圖像稍微移動一點,然後回到原始位置,即第一個圖像根本不移動。是否有一個限制,只有一個圖像可以與一個uipangesturerecognizer函數相關聯? –

+0

不,不應該沒有問題或識別器的限制。我通過回答編輯,嘗試上面的代碼 –