ドラッグアンドドロップで再配置可能なイベントを含むカレンダーを作成しています。
ビュー階層は次のようになります
。ViewController-ScrollView-CalendarWeekView-EventView
scrollViewでページングが有効になっています。一度に1週間表示します。数週間にわたる継続的なスクロールを有効にするために、スクロール時にリサイクルする3つのWeekCalendarViewオブジェクトがあります。個々のEventViewは、CalendarWeekViewのサブビューです。
EventViewをある週から別の週にドラッグアンドドロップできるようにしたいと思います。
EventViewsのUILongPressGestureRecognizerセットアップで、表示されている1週間以内にドラッグアンドドロップで正常に動作しています。WeekViewに「ホットエッジ」を追加してスクロールをトリガーしました。これにより、現在の週からその両側の週にドラッグアンドドロップできます。
ただし、最初の週から1週間以上スクロールすると、ビューのリサイクルが発生し、ドラッグしているEventViewを作成して「所有」しているWeekViewがリサイクルされます(プロパティがリセットされます)。ドラッグしているイベントオブジェクトはリセットされて再利用されるため、ドラッグ動作が強制終了されます(または、ドラッグ中にドラッグされるイベントが変更されます)。
ドラッグしているビューをWeekViewsから切り離し、ドラッグしている間にイベント用の新しいオブジェクトを作成する必要があると思います。
長押しジェスチャイベントをEventViewからこの新しいオブジェクトに渡すにはどうすればよいですか?