【问题标题】:IOS drag and drop between scroll viewsIOS在滚动视图之间拖放
【发布时间】:2011-11-18 15:26:26
【问题描述】:

这就是问题所在。我有两个滚动视图,一个充满了 10 个奇怪的子视图,基本上就像扑克牌(自定义类视图)。我希望能够将其中一些视图拖放到我拥有的空滚动条上。

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

我知道我必须使用触摸,但如果有人能举出一个简单的例子,我会很感激的。 谢谢。

【问题讨论】:

  • 是的,很抱歉,它确实是“iOS”:)
  • 没有人对此有任何答案???
  • 我很惊讶以前没有人遇到过这样的要求。
  • 你能给我提供示例代码吗?

标签: ios ipad drag-and-drop gestures


【解决方案1】:

这很容易。 ScrollView 与任何其他视图一样,因此它基本上是将视图从一个父视图拖放到另一个父视图。

您的层次结构如下: 您想将视图 V 从视图 A 拖放到视图 B。这意味着当您开始 D&D 时,V 是 A 的子视图,当您完成时,V 是 B 的子视图。A 和 B 必须有一个共同的父视图S.

步骤: 0/ 您的触摸识别器必须在 S 上,而不是在 A 或 B 上。

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

【讨论】:

  • 感谢 Sulthan 我已经实现了一段类似的代码。只是忘了在这里更新状态:) 但是你如何阻止所有其他用户交互并只在 V 上启用一个??
  • 只是一个问题.. 我正在使用一堆这些小视图,并且希望有一次,我只与其中一个交互。那就是不应该发生多次拖动。它们确实发生在 IPAD 中。我该如何解决这个问题???
  • 可能性 a/ 在开始拖动之前,检查现在是否有视图已经被拖动。 b/ 当你开始拖动时,只需阻止所有其他组件。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多