自定义UIView添加到视图后,UICollectionView不滚动

时间:2019-05-25 09:10:13

标签: swift

我想在添加UICollectionView之后添加自定义UIView,因为我想在集合视图上方显示自定义栏视图。这是我的代码:

func loadFilters() {
    let categoriesFlowLayout = UICollectionViewFlowLayout()
    categoriesFlowLayout.scrollDirection = .vertical

    categoriesCollection = UICollectionView(frame: CGRect(x: 10, y: getY(yAxis: searchField) + 10, width: view.frame.size.width - 20, height: (view.frame.size.height * 9 / 10) - getY(yAxis: searchField) - 10), collectionViewLayout: categoriesFlowLayout)
    categoriesCollection.register(categoriesCell.self, forCellWithReuseIdentifier: "categoriesCell")
    categoriesCollection.delegate = self
    categoriesCollection.dataSource = self
    categoriesCollection.backgroundColor = UIColor.clear
    categoriesCollection.showsVerticalScrollIndicator = false
    categoriesCollection.showsHorizontalScrollIndicator = false
    view.addSubview(categoriesCollection)

    addBar()
    categoriesCollection.isUserInteractionEnabled = true
}

addBar()函数在自定义超类ViewController中声明

如果addBar()view.addSubview(categoriesCollection)之前被调用,则看起来像下面的图像,但是如果在sendSubviewToBack()之后被调用,则我的收藏视图无法滚动或识别触摸。无论如何,是否会使收藏夹视图滚动并使自定义栏显示在最前面? 我也使用过bringSubviewToFront()useEffect()函数,但是结果是一样的

custom bar

1 个答案:

答案 0 :(得分:0)

在另一个视图上方插入一个视图时,顶视图将获得所有触摸事件。因此,UICollectionView不再接收任何触摸事件,因为它上面有另一个视图。

正如我从您的帖子中看到的那样,您只需要屏幕底部的栏即可。因此,请检查自定义UIView的大小。它可能会填满整个屏幕,并且完全位于UICollectionView上方。只需为UIView提供某种背景色,然后看看它可以填充多少空间即可。

如果这不起作用,则可以在自定义UIGestureRecognizer上使用UIView并将触摸事件转发到UICollectionView