本文介绍了在 ipad 中的两个表之间拖放的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我的 iPad 应用程序中有两个 UITableView.我想从一个 tableview 中拖动一个单元格并放到另一个 tableview 上.请建议我任何想法如何实现拖动&在 iPad 中的两张桌子之间掉落?
I have two UITableView in my iPad application.I want to drag a cell from one tableview and drop onto another tableview.Please suggest me any idea how can I Implement drag & drop between two tables in iPad ?
提前致谢
推荐答案
我已经实施了 a之前的解决方案.
- 该解决方案的主要组件是侦听拖放事件并将它们广播给委托的类;我称这个组件为
手势协调器
.它处理从UIGestureRecognizer
发出的事件,以计算拖放"状态并通知委托. - 例如,作为其委托的视图控制器将接收有关何时在集合之间交换项目的消息,然后更新其集合视图和数据源.
- 手势协调器本质上只是
UIGestureRecognizer
的拖放装饰器.
- The main component of the solution is class that listens for drag / drop events and broadcasts them to a delegate; I called this component the
gesture coordinator
. It handles the events emitted from aUIGestureRecognizer
to calculate the 'drag and drop' state and notify the delegate. - For example, a view controller acting as its delegate would receive messages about when items have been exchanged between collections and then update its collection views and data sources.
- The gesture coordinator is essentially just a drag-and-drop decorator for a
UIGestureRecognizer
.
以下是我在实现手势协调器时考虑的建议:
Here are the propositions that I considered when implementing the gesture coordinator:
- 集合是包含子项和子项数组的视图.
- 拖动区域由一个超级视图和一组有序的集合组成,这些集合作为该超级视图中的子视图存在.
- 拖动区域中集合的顺序决定了它们的拖/放优先级.也就是说,如果某个集合位于拖动区域的有序集合集合的开头,则在该集合上发生的拖放操作将被识别为该集合中任何较晚的集合.
- 当且仅当在拖动区域中集合的可拖动项目的边界内启动手势时,拖动才会开始.当且仅当拖动开始后,手势的位置在拖动区域内发生变化时才会发生拖动.
- 当且仅当拖动手势停止、取消或完成后,拖动才会停止.
- 当且仅当拖动停止在指定为可删除的点时,才会发生删除.例如,用户可以将拖动区域内的某些边界指定为删除时删除"区域.
- 当且仅当拖动停止在它开始所在的集合的边界内,在该集合中指定为可重新排列的不同项目上,以及在拖动区域中未指定的点上时,才会发生重新排列可删除.
- 当且仅当拖动停止在拖动区域中的另一个集合的边界内,在该集合中指定为可放置的特定项目或点上,以及拖动区域中不可放置的点上时,才会发生放置指定为可删除.