gpt4 book ai didi

ios - 在手势期间切换对象(拖放)

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:44:18 27 4
gpt4 key购买 nike

我正在创建一个带有拖放式可重排事件的日历。

View 层次结构如下所示:
ViewController - ScrollView - CalendarWeekView - EventView

scrollView 启用了分页,我一次显示一周。为了能够跨周连续滚动,我有三个 WeekCalendarView 对象,我在滚动时回收它们。各个 EventView 是 CalendarWeekView 的 subview 。

我希望能够将 EventView 从一周拖放到另一周。

在 EventViews 上使用 UILongPressGestureRecognizer 设置,我在可见的一周内进行了拖放操作。我向 WeekView 添加了“热边缘”以触发滚动,这样我就可以从当前周拖放到它工作的任何一侧的周。

但是,如果我从第一周开始滚动超过一个星期,就会发生 View 回收,并且创建并“拥有”我正在拖动的 EventView 的 WeekView 将被回收(属性重置)。我正在拖动的事件对象被重置并重新使用,从而终止了拖动行为(或者最多更改正在拖动中间拖动的事件!)。

我想我需要将拖动 View 与 WeekView 分离,在拖动时为我的事件创建一个新对象。

如何将长按手势事件从 EventView 传递给这个新对象?

最佳答案

How do i pass the long-press gesture event from the EventView to this new object?

正如您所建议的:D 您可以使用 addTarget:action:removeTarget:action: 来调整手势识别器调用什么对象的什么方法。如果愿意,您甚至可以同时拥有多个目标。

在这种情况下,您可能想要这样的东西:

[g removeTarget:self action:NULL]; // Remove everything that this object added
[g addTarget:newObject action:newSEL];

编辑:由于您正在拖动一个特定的 EventView,而不是创建一个新的并处理混洗 GR,请尝试将拖动的 EventView 移动到另一个 super View (可能是 ScrollView ,尽管我什至将 UIWindow 用于这种事情)。

关于ios - 在手势期间切换对象(拖放),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12809256/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com