我正在从头开始开发一个UICollectionViewLayout
。我想实现一个交错的网格布局,又名Pinterest布局。我知道,那里有很多,但几乎所有它们都只支持静态项目高度,而我希望项目高度是动态计算的。
我让布局过程正常工作,但现在我偶然发现了一个问题。我想在部分标题中添加一个搜索栏。问题是,每当我调用collectionView.reloadData()
搜索栏时,搜索栏都会失去第一响应者状态(同时保持其他状态,例如当前值(。
我尝试了通常的解决方法(例如在reloadData()
后立即拨打searchBar.becomeFirstResponder()
(,但没有帮助。另一种解决方法是将带有搜索栏和项目的标题保留在单独的部分中,并且仅重新加载带有项目的部分,但我的布局目前仅支持一个部分,很高兴知道这是否真的会解决问题,然后再花时间实现对多个部分的支持(否则我不需要(。
是什么导致搜索栏失去第一响应者状态,我该如何防止这种情况? 我对自定义UICollectionViewLayout
没有太多经验,因此我也希望了解有关引擎盖下发生的事情(重新加载数据时和一般情况下(的任何信息。
我最终实现了对多个部分的支持,将带有搜索栏的标题保留在单独的部分中,并且只重新加载带有项目的部分。似乎此解决方法也适用于自定义布局。