我有一个UICollectionViewController
,它使用交互式运动API支持单元格的重新排序。将单元格拖动到其他位置然后返回其原始位置时,它会卡入/跳转到位。这只会在iOS 13上发生,而不会在iOS 11或iOS 12上发生。
https://imgur.com/kKq9xr3
我使用以下方法来处理长按收集视图单元格的操作:
@objc private func handleLongPress(_ recognizer: UILongPressGestureRecognizer) {
switch recognizer.state {
case .began:
guard let selectedIndexPath = collectionView.indexPathForItem(at: recognizer.location(in: collectionView)) else {
break
}
collectionView.beginInteractiveMovementForItem(at: selectedIndexPath)
case .changed:
collectionView.updateInteractiveMovementTargetPosition(recognizer.location(in: collectionView))
case .ended:
collectionView.endInteractiveMovement()
default:
collectionView.cancelInteractiveMovement()
}
}
此处提供一个最小的可重现示例:https://github.com/wsun/ios13DragDrop
我想坚持使用交互式移动API,而不是使用更新的iOS 11拖放API,因为它可以控制用户将单元格拖放到的位置。由于我没有做任何特别新颖的事情,因此我怀疑这可能是iOS 13中的UIKit回归。有人针对此问题有任何建议或解决方法吗?
最佳答案
由于iOS11拖放内置于CollectionViews中,因此您不再需要这样做。
https://developer.apple.com/documentation/uikit/views_and_controls/collection_views/supporting_drag_and_drop_in_collection_views
关于ios - 在iOS 13上拖动时,UICollectionView单元格会捕捉到原始位置,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/59624124/