我正在创建一个带有拖放可重新排列事件的日历。
视图层次结构如下所示:
ViewController - ScrollView - CalendarWeekView - EventView
scrollView 启用了分页,我一次显示一周。为了实现跨周的连续滚动,我在滚动时回收了三个 WeekCalendarView 对象。各个 EventView 是 CalendarWeekView 的子视图。
我希望能够将一个 EventViews 从一个星期拖放到另一个星期。
我在可见的一周内通过 EventViews 上的 UILongPressGestureRecognizer 设置进行了拖放操作。我在 WeekView 中添加了“热边缘”来触发滚动,这样我就可以从当前一周拖放到它工作的任一侧。
但是,如果我从最初的一周开始滚动超过一周,则会发生视图回收,并且创建并“拥有”我正在拖动的 EventView 的 WeekView 将被回收(属性重置)。我正在拖动的事件对象被重置并重用,从而终止了拖动行为(或者充其量改变了被拖动的事件!)。
我想我需要将拖动视图与 WeekViews 分离,在拖动时为我的事件创建一个新对象。
如何将 EventView 中的长按手势事件传递给这个新对象?