gpt4 book ai didi

ios - 在 drag-n-reorder 操作期间,如何检测单元格何时在视觉上被切换位置?

转载 作者:行者123 更新时间:2023-12-05 04:47:24 25 4
gpt4 key购买 nike

我使用以下代码片段来实现拖动和重新排序操作。

class DashboardViewController {
private func initCollectionView() {
...

let gesture = UILongPressGestureRecognizer(target: self, action: #selector(longPressGesture))
collectionView.addGestureRecognizer(gesture)
}

@objc func longPressGesture(_ gesture: UILongPressGestureRecognizer) {
switch gesture.state {
case .began:
self.began(gesture)
case .changed:
self.changed(gesture)
case .ended:
self.ended(gesture)
default:
self.cancel(gesture)
}
}
}

extension DashboardViewController {
func began(_ gesture: UILongPressGestureRecognizer) {
print(">> began")

let location = gesture.location(in: self.collectionView)

guard let indexPath = self.collectionView.indexPathForItem(at: location) else {
return
}

collectionView.beginInteractiveMovementForItem(at: indexPath)
}

func changed(_ gesture: UILongPressGestureRecognizer) {
print(">> changed")

collectionView.updateInteractiveMovementTargetPosition(location)
}

func ended(_ gesture: UILongPressGestureRecognizer) {
print(">> ended")

collectionView.endInteractiveMovement()
}

func cancel(_ gesture: UILongPressGestureRecognizer) {
print(">> cancel")

collectionView.endInteractiveMovement()
}
}

enter image description here

如您在屏幕截图中所见,当我开始拖动第一个单元格时,changed 将继续被调用。

当我拖动到足够靠近第二个单元格时,第二个单元格将在视觉上切换到第一个单元格的位置。

我希望能够检测到,当第二个单元格在视觉上切换到第一个单元格时。有谁知道我怎样才能做到这一点?

谢谢。

最佳答案

您可能无法发现视觉单元格已切换到第一个位置,但您可以在切换发生时延迟一段时间后尝试检查

拖动单元格时将调用此委托(delegate)方法

optional func collectionView(_ collectionView: UICollectionView, 
targetIndexPathForMoveOfItemFromOriginalIndexPath originalIndexPath: IndexPath,
atCurrentIndexPath currentIndexPath: IndexPath,
toProposedIndexPath proposedIndexPath: IndexPath) -> IndexPath

这是文档地址

https://developer.apple.com/documentation/uikit/uicollectionviewdelegate/3750828-collectionview

关于ios - 在 drag-n-reorder 操作期间,如何检测单元格何时在视觉上被切换位置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68496182/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com