ios - 跨数据重新加载保持自定义 UICollectionViewLayout 中视图的第一响应者状态
问题描述
我正在UICollectionViewLayout
从头开始开发。我想实现一个交错的网格布局,也就是 Pinterest 布局。我知道,那里有很多,但几乎所有这些都只支持静态项目高度,而我希望动态计算项目高度。
我让布局过程正常工作,但现在我偶然发现了一个问题。我想在部分标题中添加一个搜索栏。问题是每当我调用collectionView.reloadData()
搜索栏时,都会丢失第一响应者状态(同时保持其他状态,例如当前值)。
我尝试了通常的解决方法(例如立即调用searchBar.becomeFirstResponder()
after reloadData()
),但没有帮助。另一种解决方法是将标题与搜索栏和项目放在单独的部分中,并且只重新加载包含项目的部分,但我的布局目前只支持一个部分,很高兴知道这是否真的能在花时间之前解决问题实现对多个部分的支持(否则我不需要)。
是什么导致搜索栏失去第一响应者状态,我该如何防止这种情况?我对 custom 没有太多经验UICollectionViewLayout
,所以我也很感激有关幕后发生的事情的任何信息(当数据重新加载时以及一般情况下)。
解决方案
我最终实现了对多个部分的支持,将带有搜索栏的标题保留在单独的部分中,并且只重新加载包含项目的部分。似乎这种解决方法也适用于自定义布局。
推荐阅读
- powershell - 如何在每个循环中增加字符串中的数字?
- c# - 在 XAML 中调用时,如何使我的自定义依赖项属性排序到顶部?
- mysql - MYSQL:CREATE USER 'user'@'%' 与 CREATE USER 'user'@'localhost' 的区别?
- express - Express Mongoose 在回调中抛出自定义错误
- python - PyAudio 未在 MacOS Big Sur 上的 PyCharm 中安装
- python - 在python中检索文件编码
- r - 在 R 闪亮中选择 navbarMenu 中的 tabPanel 时颜色变化
- python - 从 python 中获取 Flask 数据
- node.js - 无法读取未定义云的属性“缓冲区”
- google-apps-script - 如何在 GOOGLE SHEET 中使用案例选择