2013-03-18 70 views
2

我有一个滚动视图,其中我有多个图像视图,我正在应用平移手势拖动图像视图并添加到其他视图。问题是,当我尝试滚动滚动视图时,首先识别平移手势,并且调用平移操作而不是滚动视图来滚动。 这是我的平移代码ImageView panGesture取消UISCrollVIew滚动功能

-(void)move:(UIPanGestureRecognizer *)sender 
{ 

    [[baseView superview] bringSubviewToFront:baseView]; //sender.view]; 

    [hatScroll setScrollEnabled:NO]; 

    // We pass in the gesture to a method that will help us align our touches so that the pan and pinch will seems to originate between the fingers instead of other points or center point of the UIView 
    [self adjustAnchorPointForGestureRecognizer:sender]; 

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

     if ([[[sender view] superview] superview] == itemView || [[[sender view] superview] superview] == itemView_iphone5) // adds the imageview in the item scroll 
     { 
      int tag = [[sender view] tag]/100; 
      UIScrollView *tempScroll; 

      if (window.bounds.size.height != 568) 
       tempScroll = (UIScrollView *)[itemView viewWithTag:-tag]; 
      else 
       tempScroll = (UIScrollView *)[itemView_iphone5 viewWithTag:-tag]; 
      CGRect frame = CGRectFromString([itemFrameDict objectForKey:[NSString stringWithFormat:@"%i",[[sender view] tag]]]); 

      CGAffineTransform transform = temp.transform; 
      UIImageView *tempImageView = [[UIImageView alloc] initWithImage: [(UIImageView *) [sender view] image]]; 
      tempImageView.tag = [[sender view] tag]; 
      tempImageView.frame = frame; 
      [tempImageView setTransform:transform]; 
      [tempImageView setFrame:frame]; 
      [tempImageView setUserInteractionEnabled:YES]; 
      [tempScroll addSubview:tempImageView]; 

      UIPanGestureRecognizer *panRecognizer = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(move:)]; 
      panRecognizer.cancelsTouchesInView = NO; 
      panRecognizer.delaysTouchesBegan = NO; 
      panRecognizer.delaysTouchesEnded = NO; 
      [panRecognizer setDelegate:self]; 
      [tempImageView addGestureRecognizer:panRecognizer]; 
     } 
    } 

    if([(UIPanGestureRecognizer*)sender state] == UIGestureRecognizerStateChanged) 
    { 
     CGPoint translatedPoint = [sender locationInView:[[sender view] superview]] ; 
     newTranslatedPoint = [[[sender view] superview] convertPoint:translatedPoint toView:baseView]; 

     if (window.bounds.size.height != 568) 
     { 
      if ([sender view].frame.size.width == 35 && [sender view].frame.size.height == 35) 
       [[sender view] sizeToFit]; 
     } 
     else 
     { 
      if ([sender view].frame.size.width == 45 && [sender view].frame.size.height == 45) 
       [[sender view] sizeToFit]; 
     } 


     [sender view].center = CGPointMake(newTranslatedPoint.x, newTranslatedPoint.y); 

     [baseView addSubview:[sender view]]; 
    } 

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

     [hatScroll setScrollEnabled:YES]; 

     [self.view insertSubview:baseView atIndex:2]; 



     CGPoint newPoint; 
     if (window.bounds.size.height != 568) 
      newPoint = [[[sender view] superview] convertPoint:newTranslatedPoint toView:itemView]; 
     else 
      newPoint = [[[sender view] superview] convertPoint:newTranslatedPoint toView:itemView_iphone5]; 

     if (newPoint.y < 0) 
     { 

      UIPinchGestureRecognizer *pinchRecognizer = [[UIPinchGestureRecognizer alloc] initWithTarget:self action:@selector(scale:)]; 
      [pinchRecognizer setDelegate:self]; 
      [[sender view] addGestureRecognizer:pinchRecognizer]; 

      UIRotationGestureRecognizer *rotationRecognizer = [[UIRotationGestureRecognizer alloc] initWithTarget:self action:@selector(rotate:)]; 
      [rotationRecognizer setDelegate:self]; 
      [[sender view] addGestureRecognizer:rotationRecognizer]; 


     } 

     else if (newPoint.y > 0) 
     { 

      int tag = [[sender view] tag]/100; 

      UIScrollView *tempScroll; 

      if (window.bounds.size.height != 568) 
       tempScroll = (UIScrollView *)[itemView viewWithTag:-tag]; 
      else 
       tempScroll = (UIScrollView *)[itemView_iphone5 viewWithTag:-tag]; 

      CGRect frame = CGRectFromString([itemFrameDict objectForKey:[NSString stringWithFormat:@"%i",[[sender view] tag]]]); 

      CGAffineTransform transform = temp.transform; 
      [[sender view] setTransform:transform]; 
      [[sender view] setFrame:frame]; 
      [tempScroll addSubview:[sender view]]; 

     } 
    } 
} 

有什么想法吗?我怎么能得到这个。随意在提到的代码处询问查询。

+0

如果您想将手势传递给添加了uiimageview的滚动视图。简单设置[tempImageView setUserInteraction:NO]; – yunas 2013-03-18 08:25:40

+2

那么如何将这个pangesture工作给imgaeview – Khushboo 2013-03-18 08:28:54

+0

与Xcode无关,xcode是IDE的唯一 - 不是sdk,也不是api也不是语言 – 2013-03-18 08:50:07

回答

2

尝试使用长按手势从滚动视图拖动该特定项目

+1

它的工作..谢谢 – Swati 2013-03-19 09:42:54