LoginSignup
1
0

More than 1 year has passed since last update.

iOSでリストのドラッグ&ドロップと長押しによるコンテキストメニューの表示は同時に実装しても競合しない

Posted at

ドラッグ&ドロップでの並べ替えと長押しによるコンテキストは共存できるのか :thinking:

iOSでは最近、リストUIでアイテムをドラッグ&ドロップで並べ替えるようなUIが流行っていますよね。
UITableViewUICollectionView では dragInteractionEnabled dragDelegate dropDelegate をそれぞれ実装することで、ドラッグ&ドロップ時のアクションを追加することができます。

一方でiOS 13からは長押しでコンテキストメニューを表示させることができるようになりました。
これは UITableViewDelegatetableView(_:contextMenuConfigurationForRowAt:point:) メソッドを使うと実装することができます。
このdelegateメソッドを実装するだけで、アイテムの長押しでコンテキストメニューを表示させることができます。

この2つはAPIとしても完全に独立しており、同時に実装することが可能です。
ではその場合、機能の共存は可能なのでしょうか:question:

結論: 共存可能 :earth_africa:

そこで適当なUITableViewを使ったコードで実装してみたところ、 2つの機能は共存可能なようでした。
動作としては上の画像の通りで

  • 長押しするとコンテキストメニューが表示される
  • そこから一定距離をドラッグするとドラッグ&ドロップのジェスチャーに切り替わる

という感じになるようです。
意外と情報がなかったのでメモです。

参考資料

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0