Objective c 在UIScrollview中添加UIPangesture for UIButton以在all视图上移动

Objective c 在UIScrollview中添加UIPangesture for UIButton以在all视图上移动,objective-c,xcode,uiscrollview,uipangesturerecognizer,uiscrollviewdelegate,Objective C,Xcode,Uiscrollview,Uipangesturerecognizer,Uiscrollviewdelegate,在我的项目中,我有底部的滚动条和顶部的表格。 在scrollview中,我添加了10个按钮。对于每个按钮,我都有平移手势在屏幕上移动。当按钮与table相交时,我将在tableview中添加一张图片 但是平移在卷轴内工作。如何使其在视图上移动 我的编码是: downscroll=[[UIScrollView alloc]initWithFrame:CGRectMake(24, 635, 980, 100)]; downscroll.backgroundColor=[UIColor redColo

在我的项目中,我有底部的滚动条和顶部的表格。 在scrollview中,我添加了10个按钮。对于每个按钮,我都有平移手势在屏幕上移动。当按钮与table相交时,我将在tableview中添加一张图片

但是平移在卷轴内工作。如何使其在视图上移动

我的编码是:

downscroll=[[UIScrollView alloc]initWithFrame:CGRectMake(24, 635, 980, 100)];
downscroll.backgroundColor=[UIColor redColor];
downscroll.contentSize=CGSizeMake(990, 100);

[self.view addSubview:downscroll];

for(int i=1;i<=8;i++)
{
        b1=[UIButton buttonWithType:UIButtonTypeCustom];
        b1.frame=CGRectMake(30+px, 0, 80, 80);
       [b1 setImage:[UIImage imageNamed: [NSString stringWithFormat:@"Icon%i.png",i]]      forState:UIControlStateNormal];
     [downscroll addSubview:b1];
    // [self.view sendSubviewToBack:b1];
   // [self.view bringSubviewToFront:b1];

    [groupbutton addObject:b1];
     panRecognizer3= [[UIPanGestureRecognizer alloc]initWithTarget:self action:@selector(move:)];
    [b1 setUserInteractionEnabled:YES];
    b1.exclusiveTouch=YES;
    img.tag=i;
    [b1 addGestureRecognizer:panRecognizer3];

    px=px+120;
}
downscroll=[[UIScrollView alloc]initWithFrame:CGRectMake(246359801000)];
downscroll.backgroundColor=[UIColor redColor];
downscroll.contentSize=CGSizeMake(990100);
[self.view addSubview:downscroll];

对于(inti=1;i,以下是我在应用程序中使用的方法 在我的代码中,我遵循以下步骤

  • 在UIPanGestureRecognizer起点中,我从scrollView将该按钮添加到self.view
  • 使用
    translationView
    方法拖动按钮
  • 3.在UIPanGestureRecognizer结束状态下,我将检查按钮是否在目标视图中掉落。如果是,请执行所需任务,否则请在scrollView中的相同位置添加按钮

    `MoveControl` is a UIPanGestureRecognizer method
    
    
    
    - (void)MoveControl:(UIPanGestureRecognizer *)recognizer
        {
            UIButton *vew=(UIButton *)[recognizer view];
            CGPoint newCenter = [recognizer translationInView:self.view];
            if (recognizer.state==UIGestureRecognizerStateBegan) {
                CGPoint point=vew.frame.origin;
                [vew setTitle:NSStringFromCGPoint(point) forState:UIControlStateSelected];
                CGRect rect=[self.view convertRect:[vew frame] fromView:[vew superview]];
                [vew setFrame:rect];
                [self.view addSubview:vew];
                CGPoint point1=vew.frame.origin;
                [vew setTitle:NSStringFromCGPoint(point1) forState:UIControlStateDisabled];
            }
            else
            {
                CGPoint oldcentre= CGPointFromString([vew titleForState:UIControlStateDisabled]);
                CGRect rect=vew.frame;
                CGPoint  origin=rect.origin;
                origin.x=(newCenter.x+oldcentre.x);
                origin.y=(newCenter.y+oldcentre.y);
                rect.origin=origin;
                vew.frame=rect;
                if (CGRectIntersectsRect(rect, [pageOriginalContainer frame])) {
                    [YourTable setBackgroundColor:[UIColor lightGrayColor]];//Notifying that the tableView will accept the icon
                }
                else
                {
                    [YourTable setBackgroundColor:[UIColor clearColor]];
                }
            }
            if (recognizer.state==UIGestureRecognizerStateEnded)
            {
                CGRect rect=[vew frame];
                if (CGRectIntersectsRect(rect, [pageOriginalContainer frame])) {
                      //your method of adding the Image to table
                }
                else//else part is means for if user dropped dragging somewhere else other than Table
                {
                    CGPoint point=CGPointFromString([vew titleForState:UIControlStateSelected]);
                    CGRect frame=vew.frame;
                    frame.origin=point;
                    vew.frame=frame;
                    [pageCopyContainer addSubview:vew];
        //            [NSFileManager defaultManager]
                }
            }
        }