iOS에서 목록 드래그 앤 드롭과 길게 눌러 컨텍스트 메뉴 표시는 동시에 구현해도 충돌하지 않습니다.

드래그 앤 드롭으로 정렬하고 길게 누르면 컨텍스트가 공존 할 수 있습니까?



iOS에서는 최근 목록 UI에서 항목을 드래그 앤 드롭으로 정렬하는 UI가 유행하고 있지요.UITableView 또는 UICollectionView 에서는 dragInteractionEnabled dragDelegate dropDelegate 를 각각 구현하여 드래그 앤 드롭 시 액션을 추가할 수 있습니다.

한편 iOS 13부터는 길게 눌러 컨텍스트 메뉴를 표시시킬 수 있게 되었습니다.
이것은 UITableViewDelegatetableView(_:contextMenuConfigurationForRowAt:point:) 메서드를 사용하여 구현할 수 있습니다.
이 delegate 메소드를 구현하는 것만으로, 아이템의 길게 눌러 컨텍스트 메뉴를 표시시킬 수가 있습니다.

이 두 가지는 API로 완전히 독립적이며 동시에 구현할 수 있습니다.
그렇다면이 기능을 공존 할 수 있습니까?

결론: 공존 가능





그래서 적절한 UITableView를 사용하는 코드로 구현해 보았습니다. 그런데 두 가지 기능은 공존할 수 있는 것 같았습니다.
동작으로서는 위의 그림대로
  • 길게 누르면 컨텍스트 메뉴가 나타납니다
  • 거기에서 일정 거리를 드래그하면 드래그 앤 드롭 제스처로 전환됩니다.

    라는 느낌이 되는 것 같습니다.
    의외로 정보가 없었기 때문에 메모입니다.

    참고 자료


  • tableView(_:contextMenuConfigurationForRowAt:point:) | Apple Developer Documentation
  • UITableView의 dragDelegate, dropDelegate에 대해 알아보고 시도했다 | DevelopersIO
  • 좋은 웹페이지 즐겨찾기