2011-09-16 108 views
7

因此,这里是抓住。我有两个滚动视图,其中一个填充了10个奇数子视图,基本上就像扑克牌(自定义类视图)。我希望能够将这些视图中的一些拖放到我拥有的空滚动条上。IOS在滚动视图之间拖放

这两个滚动视图之间有许多不同的视图。所以我想显示视图实际上是从一个视图中拖动并放置在另一个滚动视图中。我如何做到这一点。

我知道我必须使用触摸,但如果任何人都可以掀起一个快速的例子,我会很好。 谢谢。

+0

是啊对不起,它确实是'iOS':) – SeriousSam

+0

没有人有任何答案? – SeriousSam

+0

我很惊讶之前没有人遇到过这样的要求。 – SeriousSam

回答

7

它很容易。 ScrollView就像任何其他视图,所以它基本上是将视图从一个超级视图拖放到另一个超级视图。

层次结构如下: 你想拖,并从视图删除视图V到一个视图B.这意味着,当你开始d & d,V是A的子视图,当你完成,V是B. A和B的子视图必须有共同的上海华S.

步骤: 0 /你的触摸识别器必须对S,不是在A或B

1 /用户轻敲V.您将它从A中删除并将它添加到同一位置上的S(UIView具有将位置从视图转换为另一个视图的方法)。
2 /用户将V拖到B上。您在V中更改V的位置。
3 /用户跌落V.如果足够接近B,则将其插入B(转换位置S-> B)并为位置之间的差异设置动画。如果它仍然靠近A,则将其动画回到A.如果它位于A和B之间,则可以将它插入最近的一个,或者让它停留在那里并阻止所有其他用户交互,直到用户再次轻敲V并将其拖入A或B.

+0

谢谢Sulthan我已经实现了一段类似的代码。只是忘了在这里更新状态:) 但是,如何阻止所有其他用户交互,并启用V? – SeriousSam

+0

只是一个问题,虽然..我使用了一堆这些小视图,并希望在一次,我只与他们中的一个进行交互。这是多重拖动不应该发生。他们确实发生在IPAD中。我该如何解决这个问题? – SeriousSam

+0

可能性a /在开始拖动之前,请检查现在是否有视图已被拖动。 b /当您开始拖动时,请阻止所有其他组件。 – Sulthan