swift - 自定义 UIView 添加到视图后 UICollectionView 不滚动
问题描述
我想在添加 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()
功能,但结果是一样的
解决方案
当您在另一个视图上方插入视图时,顶视图会获取所有触摸事件。因此UICollectionView
,由于另一个视图在其上方,因此不再接收任何触摸事件。
正如我从您的帖子中看到的那样,您只需要屏幕底部的栏。所以检查你自定义的大小UIView
。它可能会填满整个屏幕并且完全在UICollectionView
. 只需给UIView
某种背景颜色,看看它填充了多少空间。
如果这不起作用,您可以UIGestureRecognizer
在自定义上使用 aUIView
并将触摸事件转发到UICollectionView
.
推荐阅读
- github - Github pages 404ing on单个文件
- c++ - 将程序从x86平台转换到x64平台时,链接器命令行还是x86,导致程序出错
- python - 熊猫合并功能产生重复错误
- php - 错误 1054:“字段列表”中的未知列“numberof_bouquets_fta”-PHP Codeigniter
- php - 使用while循环时如何将文本放在图像旁边,并且每次迭代都会添加其他组件
- gitlab - 如何将克隆 git 添加到我自己在 gitlab 中创建的存储库中
- permissions - TYPO3 9LTS - 使用 plesk onyx 将实例移动到 linux 根服务器后,图像不会呈现
- c - 取BCT(Binary count Tree)中的第K个元素;
- html - 加载页面时值不会显示
- ruby-on-rails - 查询以按多列分组和计数并获得数据的良好表示?