小编Zac*_*est的帖子

当键盘可见时,UICollectionView不会重新显示在屏幕上滚动的补充视图

我有一个UICollectionViewLayout子类,它指定细胞周围和部分开始和结束的补充视图.出于这个问题的目的,我创建了一个示例项目,它具有我的布局子类的精简版本.我还创建了一个视频,直观地展示了我即将描述的问题.

示例项目如下所示([0, 1]= section 0item 1):

  • [0, 0] 类型的"部分"级补充视图 HEYCollectionViewElementKindHeaderA
  • [0, 0] 类型的"项目"级别补充视图 HEYCollectionViewElementKindCellA
  • [0, 0] 此索引路径的单元格.
  • [0, 1] 另一种CellA品种
  • [0, 1] 此索引路径的单元格.
  • 等等

在示例项目中,我在HEYCollectionViewLayout课堂上注释了一些额外的标题.如果取消注释它们,您可以看到更多未正确重用的视图.

所有的标题视图都有一个UITextField内部,虽然我能够用a UITextView和我自己的同时重现这个问题,UIView它有一个inputView集合并成为第一响应者.当键盘在CellA [0, 0]元素中的文本字段处于活动状态并且您将其上方的补充视图滚动到屏幕外然后重新打开时,视图不会重新添加到集合视图中.

在我的调查中,我发现UICollectionReusableView子类被放置在重用队列中,并hidden=YES在视图层次结构中显示,正如等待重用时所预期的那样.当键盘未激活时,我重新滚动元素,之前显示的类的同一实例将被重用并显示在屏幕上.

我已经尝试具有UICollectionViewLayout询问每个边界变化的重新布局(通过返回YES来自-shouldInvalidateLayoutForBoundsChange:); 这没有任何效果,元素仍然隐藏起来.

我一直无法在互联网上找到有关此问题的任何其他报告,但我已经在Xcode 5.1.1中的iOS模拟器7.1和运行iOS 7.1.2的iPod Touch上重现了它.


我已经通过可能的解决方法更新了上面的回购:

- (BOOL)canBecomeFirstResponder {
    return YES;
}

- (BOOL)resignFirstResponder {
    BOOL didResign = …
Run Code Online (Sandbox Code Playgroud)

cocoa-touch ios uicollectionview

6
推荐指数
1
解决办法
824
查看次数

标签 统计

cocoa-touch ×1

ios ×1

uicollectionview ×1