UICollectionView: Kontextmenüs und Umordnen

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • UICollectionView: Kontextmenüs und Umordnen

    Hallo zusammen,

    vielleicht kann ich einigen von Euch etwas Zeit und Suchen ersparen...

    Ich genieße gerade die Entwicklung einer App mit Deployment-Target iOS 13 und kann somit viel Neues ausprobieren. So soll z. B. eine UICollectionView die neuen Kontextmenüs inkl. Vorschau und Aktionen bieten, aber es sollen sich auch Items per Drag'n'Drop umordnen lassen.
    • Problem:
      Für letzteres basieren die meisten Beispiele im Netz auf der Methode moveItemAtIndexPath:toIndexPath:, leider kollidierte diese aber mit einem Kontextmenü, das über collectionView:contextMenuConfigurationForItemAtIndexPath:point: implementiert wird: Ein Gesture-Recognizer für das lange Drücken wird nicht mehr angesprungen ... wahrscheinlich, weil das Händling des Kontextmenüs diesen "schluckt".
    • Lösung:
      Man implementiere die Protokolle UICollectionViewDragDelegate und UICollectionViewDropDelegate, hierbei reichen schon drei Pflicht-Methoden aus: Übergabe des DragItems, Liefern eines DropProposals und letztlich Durchführen des Drops. Es funktioniert und man gewinnt einen netten Übergang vom Preview zum Drag. Ein entsprechender Hinweis findet sich auf der WWDC 2019 "Modernizing Your UI for iOS 13", im Netz sind die Informationen noch recht spärlich.
    Vielleicht hilft es jemandem, bei Bedarf auch gerne ein Objective-C-Snippet...

    Mattes
    Diese Seite bleibt aus technischen Gründen unbedruckt.