首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >为UICollectionView实现重新排序手势

为UICollectionView实现重新排序手势
EN

Stack Overflow用户
提问于 2017-05-11 22:25:42
回答 1查看 167关注 0票数 1

我正在用Swift Xcode8.3.2创建一个屏幕,上面有一个水平滚动的UICollectionView,上面只有一排图片。问题是,我认为“自动重新排序”功能是UICollectionView的一部分,而实际上它只在UICollectionViewController中实现。因为我只想滚动屏幕的一部分,所以我不相信我可以使用集合视图控制器--在这种情况下,集合视图总是全屏的,对吧?有了这个控制器,我发现了installsStandardGestureForInteractiveMovement,它可以自动实现手势识别器。

我希望在我的集合视图中具有相同的功能,它位于UIViewController上。然而,我不知道我需要捕获哪些手势来实现单元格的重新排序。是否有任何拖动重新排序的“魔术”内置于集合视图本身?有没有一种方法,我可以使用控制器,而不是全屏显示集合视图?

我已经实现了以下方法来执行数据的实际移动,但我不确定要设置哪个手势识别器。

代码语言:javascript
复制
func collectionView(_ collectionView: UICollectionView,
                        moveItemAt sourceIndexPath: IndexPath,
                        to destinationIndexPath: IndexPath) {

    let cellToMove = promoPages.remove(at: (sourceIndexPath as NSIndexPath).row)
    promoPages.insert(cellToMove, at: (destinationIndexPath as NSIndexPath).row)
}
EN

回答 1

Stack Overflow用户

发布于 2018-05-28 10:06:05

读取this guide并将其转换为Swift3后:

对于UIViewController类:

代码语言:javascript
复制
override func viewDidLoad() {
    super.viewDidLoad()

    let g = UILongPressGestureRecognizer(target: self,
                                         action: #selector(handleLongGesture(_:)))
    clcImages?.addGestureRecognizer(g)
}

func handleLongGesture(_ gesture: UILongPressGestureRecognizer)
{
    switch(gesture.state) {
    case UIGestureRecognizerState.began:
        guard let selectedIndexPath = clcImages?.indexPathForItem(at: gesture.location(in: clcImages)) else {
            break
        }
        clcImages?.beginInteractiveMovementForItem(at: selectedIndexPath)
    case UIGestureRecognizerState.changed:
        clcImages?.updateInteractiveMovementTargetPosition(gesture.location(in: gesture.view!))
    case UIGestureRecognizerState.ended:
        clcImages?.endInteractiveMovement()
    default:
        clcImages?.cancelInteractiveMovement()
    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43918244

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档