如何在具有UIPanGestureRecognizer的视图上进行pull-to-refresh?

时间:2017-06-09 13:45:35

标签: ios swift xcode uicollectionview uipangesturerecognizer

我有CollectionView有一些垂直单元格。在顶部的第一个单元格中,我有ImageView(覆盖整个单元格),使用UIPanGestureRecognizer。由于这个手势识别器,我无法在集合视图上刷新,因为它立即开始识别平底锅。有没有办法可以检查用户是否正在向下滑动以便我可以从平移切换到正常的拉动刷新行为?

collectionView中的第一个单元格是一个imageView,它使用平移识别器将对象旋转360度。注意:360行为只是通过不同角度拍摄的图像阵列。平移将翻转数组索引并显示位于那里的图像。

这是我当前的pan处理程序:

var currentImageIndex: Int = 0
var lastImageSection: Int = 0

func didPan(_ panGestureRecognizer: UIPanGestureRecognizer) {
    guard let fetchedImagesCount = fetchedImages?.count, fetchedImagesCount != 0 else {
            return
    }

    let widthOfView = Int(view.frame.width * 0.8)
    let numberOfSections = widthOfView / fetchedImagesCount
    let currentImageSection = Int(floor(panGestureRecognizer.location(in: view).x)) / numberOfSections

    if lastImageSection < currentImageSection {
        currentImageIndex = currentImageIndex - 1 < 0 ? fetchedImagesCount - 1 : currentImageIndex - 1
    }
    else if lastImageSection > currentImageSection {
        currentImageIndex += 1
    }

    lastImageSection = currentImageSection        

    let shouldUpdateLastImageIndexShown = panGestureRecognizer.state == .ended ||
        panGestureRecognizer.state == .cancelled ||
        panGestureRecognizer.state == .failed


    advanceToImageAtIndex(currentImageIndex % fetchedImagesCount, updateLastImageIndexShown: shouldUpdateLastImageIndexShown)
}

如果用户尝试从第一个单元格中拉出刷新,则由于手势识别器而无法工作。如果用户向下滑动第一个单元格,如何添加正常的拉动刷新行为?

0 个答案:

没有答案