IOS:从一个滚动视图拖放imageview到一个视图

可能重复:
如何将一个uiimage从scrollview拖到iphone sdk中的另一个uiimageview

在我的iPad中,我有一个视图,在里面,在左边,我有一个滚动视图10个imageViews; 所以我应该将这些图像从scrollview拖放到我的大子视图中; 我该怎么做?

我做了一些类似于你所描述的事情。 我记得把它closures,我创build了一个新的UIGestureRecgonizer ,我称为UIDownwardDragGestureRecognizer 。 我想我然后通过scrollviews手势识别器迭代,要求他们等待UIDownwardGestureRecognizer失败,如:

 UIDownwardDragGestureRecognizer *downwardGesture = [UIDownwardGestureRecognizer alloc] initWithTarget:self action:@selector(downwardGestureChanged:)]; [myScrollview addGestureRecognizer:downwardGesture]; for (UIGestureRecognizer *gestureRecognizer in myScrollview.gestureRecognizers) { [gestureRecognizer requireGestureRecognizerToFail:myDownwardGesture]; } 

一旦你有这个设置,你应该能够做到这样的事情:

 - (void) downwardGestureChanged:(UIDownwardDragGestureRecognizer*)gesture { CGPoint point = [gesture locationInView:myScrollView]; if (gesture.state == UIGestureRecognizerStateBegan) { UIView *draggedView = [myScrollView hitTest:point withEvent:nil]; if ([draggedView isTypeOfClass:[UIImageView class]]) { self.imageBeingDragged = (UIImageView*)draggedView; } } else if (gesture.state == UIGestureRecognizerStateChanged) { self.imageBeingDragged.center = point; } else if (gesture.state == UIGestureRecognizerStateEnded || gesture.state == UIGestureRecognizerStateCancelled || gesture.state == UIGestureRecognizerStateFailed) { // Determine if dragged view is in an OK drop zone // If so, then do the drop action, if not, return it to original location self.imageBeingDragged = nil; } } 

在UIGestureRecognizerStateBegan中,一旦你find一个UIImageView,你可能想从superview(scrollview)中移除它,并将其作为子视图添加到其他容器中。 如果您这样做,您将需要将点转换到新的坐标空间。 如果您希望原始图像停留在滚动视图中,请将其复制并添加到外部容器中。

为了试试上面的例子,看看它的工作原理,你可能需要closures滚动视图上的剪辑,因为我上面给出的例子是从滚动视图中拖动UIImageView(尽pipe通常你会把它添加到一些包含视图)。

在我看到这样做的方式是通过使用覆盖层来捕捉触摸并传递它们。 这允许您在UIScrollView消耗它们之前拦截点击。

这里是我在试图构build一个UITableView(在滚动视图中)的时候看到的演示video ,该视图可能会拖放单元格。

此外,我不知道这是多么适用,但这是几天前我做的一个类似的职位 。

回顾了这个问题后,我创build了一些东西,允许你在UITableViews之间拖放细胞,类似于前面提到的video。 我的教程可以在这里find,结果可以在这个YouTubevideo中看到。 此方法使用iOS 5中最新的手势function,并使用长按方式closures单元格。

希望你能在这里find有帮助的东西。