Swift拖放 - 在同一个collectionView中同时移动多个项目

3

我目前正在尝试在我的应用程序中实现拖放功能。我观看了这个视频:

https://developer.apple.com/videos/play/wwdc2017/223/

(还有一个可下载的项目,完全展示了我即将要问的内容)

有一件事我不明白,就是这个:

enter image description here

当我拖动一个项时,我可以将其放在同一个集合视图中。然而,当我拖动多个项时,它就不再起作用了。没有创建“间隙”,当我放置这些项时,它们只会回到原来的位置。

这有什么特定的原因我没有看到吗?因为我很想拥有这个功能。

我的意思是,我可能可以实现实际的“移动数据”部分(演示项目没有考虑到这种情况),但我看不出如何在悬停在项上时添加这个“间隙”。

感谢任何建议 :)

2个回答

3

目前最新的 API(截至 iOS 13)还不支持此功能。可以通过返回一个意图 .unspecified 并手动绘制拖放指示器来实现。

参见苹果工程师 Tyler Fox 的 推特回复


0

这是不是被“旧”系统用于collectionView的?在iOS 11之前引入了Drag&Drop。我不确定这是否兼容(我认为Drag&Drop私下使用了这个方法。我不知道你在哪里可以调用这个方法)。 - SwiftedMind
据我理解,拖放更适用于在应用程序或视图之间移动内容。我在我的应用程序FXpress中使用它,在iOS 11上运行良好。您需要使用长按手势识别器,并从中调用方法,UICollectionView提供了一个默认实现,您可以通过设置collectionView.installsStandardGestureForInteractiveMovement = true来使用。额外的好处是这也适用于iPhone。 - Aaron Kreipe
在这种情况下,我怀疑如果多个项目被丢弃,它们可能会被包装在一个数组中,或许需要在collectionView(_:canHandle:)方法中进行检查。 - Aaron Kreipe
谢谢你的建议,但我查阅了文档,它说“如果你不实现这个方法,集合视图会默认返回true”。所以默认情况下,它应该可以处理多个项目。 - SwiftedMind
你最后解决了这个问题吗? - iamsim.me
显示剩余2条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接