我有一个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/

10-14 21:08
查看更多