首页 > 解决方案 > 跨数据重新加载保持自定义 UICollectionViewLayout 中视图的第一响应者状态

问题描述

我正在UICollectionViewLayout从头开始开发。我想实现一个交错的网格布局,也就是 Pinterest 布局。我知道,那里有很多,但几乎所有这些都只支持静态项目高度,而我希望动态计算项目高度。

我让布局过程正常工作,但现在我偶然发现了一个问题。我想在部分标题中添加一个搜索栏。问题是每当我调用collectionView.reloadData()搜索栏时,都会丢失第一响应者状态(同时保持其他状态,例如当前值)。

我尝试了通常的解决方法(例如立即调用searchBar.becomeFirstResponder()after reloadData()),但没有帮助。另一种解决方法是将标题与搜索栏和项目放在单独的部分中,并且只重新加载包含项目的部分,但我的布局目前只支持一个部分,很高兴知道这是否真的能在花时间之前解决问题实现对多个部分的支持(否则我不需要)。

是什么导致搜索栏失去第一响应者状态,我该如何防止这种情况?我对 custom 没有太多经验UICollectionViewLayout,所以我也很感激有关幕后发生的事情的任何信息(当数据重新加载时以及一般情况下)。

标签: iosuicollectionviewuicollectionviewlayout

解决方案


我最终实现了对多个部分的支持,将带有搜索栏的标题保留在单独的部分中,并且只重新加载包含项目的部分。似乎这种解决方法也适用于自定义布局。


推荐阅读