0

我的屏幕上有两个 UIScrollView,我需要能够将 UIView 从一个滚动视图拖到另一个滚动视图。

目前,我在要移动的 UIView 上有一个 UILongGestureRecognizer ,这样当用户开始拖动它时,我让视图跟随触摸:

- (void)dragChild:(UILongPressGestureRecognizer *)longPress {
    [[longPress view] setCenter:[longPress locationInView:[[longPress view] superview]]];
}

但是当我得到起始 UIScrollView 的边界时,视图消失了,因为它被锁定在该滚动视图的边界中。

当我开始拖动时,有没有办法将它从滚动视图中“弹出”,以便我可以将它带到另一个滚动视图?

另外,我如何测试“drop”位置?我想知道它是否被丢弃在某个其他视图上。

或者我是不是走错了路?

多谢你们

4

2 回答 2

1

如果您需要将其从滚动视图拖到另一个,请执行以下操作(伪代码)

当您开始拖动时,请执行以下操作

//scrollView1 is the scroll view that currently contains the view
//Your view is the view you want to move
[scrollView1.superView addSubView:yourView];

现在删除视图时,您需要知道它是否在另一个滚动视图中

//scrollView2 is the second scroll view that you want to move it too
//Your view is the view you want to move
CGPoint point = yourView.center;
CGRect rect = scrollView2.frame;
if(CGRectContainsPoint(rect, point))
{  
    //Yes Point is inside add it to the new scroll view
    [scrollView2 addSubView:yourView];
}
else
{
    //Point is outside, return it to the original view
    [scrollView1 addSubView:yourView];
}
于 2012-06-09T16:36:37.963 回答
0

这是一个未经测试的想法:

  • 当拖动开始时,将拖动视图移出滚动视图(作为子视图)并进入两个滚动视图的相互父视图。
  • 当拖动结束时,将拖动视图移出超级视图并进入新的滚动视图。

您可能必须小心坐标系,[UIView convertPoint:toView:]在移动物体时使用诸如在视图的不同视角之间转换之类的东西。

于 2012-06-09T16:41:56.717 回答