我正在使用拖放可重排事件创建日历。
视图层次结构如下所示:
ViewController - ScrollView - CalendarWeekView - EventView
scrollView启用了分页,我一次显示一周。为了在几周内启用连续滚动,我有三个WeekCalendarView对象,我在滚动时回收。各个EventViews是CalendarWeekView的子视图。
我希望能够将EventViews从一周拖放到另一周。
我在EventViews上使用UILongPressGestureRecognizer设置在可见周内拖放工作正常。我在WeekView中添加了“热边”以触发滚动,这样我就可以将当前一周的拖放工作拖到工作的任何一周。
但是,如果我从我的第一周开始滚动超过一周,那么视图回收就会发生,并且创建并“拥有”我正在拖动的EventViews的WeekView会被回收(属性重置)。我正在拖动的事件对象会被重置并重复使用,从而消除拖动行为(或者最好在拖动过程中拖动事件!)。
我想我需要将拖动视图与WeekViews分离,在我的事件被拖动时为其创建一个新对象。
如何将长按手势事件从EventView传递给这个新对象?
答案 0 :(得分:0)
如何将长按手势事件从EventView传递给这个新对象?
正如您的建议:D您可以使用addTarget:action:
和removeTarget:action:
来调整手势识别器调用对象的方法。如果愿意,您甚至可以同时拥有多个目标。
在你的情况下,你可能想要这样的东西:
[g removeTarget:self action:NULL]; // Remove everything that this object added
[g addTarget:newObject action:newSEL];