UICollectionView.reloadData或UICollectionView.deleteItemsAtIndexPaths使单元格隐藏但仍可单击

时间:2015-08-12 11:07:15

标签: ios objective-c uicollectionview uicollectionviewcell

我有一个包含几个单元格的UICollectionView。

我通过单击其上的按钮删除了第一个单元格,无论我选择[UICollectionView reloadData] or [UICollectionView deleteItemsAtIndexPaths:],它都能正常工作。

现在下面的单元格会向前移动,所以第一个单元格现在将是删除之前的第二个单元格,这很容易理解,对吗?

现在出现了奇怪的部分:

  1. 我点击第一个单元格的删除按钮,显示:

     <MyCell: 0x7fc5de566590; baseClass = UICollectionViewCell; frame = (220 20; 80 104); alpha = 0; hidden = YES; layer = <CALayer: 0x7fc5de566740>>
    
  2. 我打印出可见细胞:

    < __NSArrayM 0x7fc5de655830>(
    < MyCell: 0x7fc5de55c060; baseClass = UICollectionViewCell; frame = (20 134; 80 104); layer = < CALayer: 0x7fc5de55c210>>,
    < MyCell: 0x7fc5de635290; baseClass = UICollectionViewCell; frame = (120 134; 80 104); layer = < CALayer: 0x7fc5de635440>>
    )
    
  3. 见?我点击的单元格实际上是被删除的单元格,除非它不是!它有一个flag hidden = YES,它还有一个框架和超级视图(是的,superview是集合视图)。

    现在这给我带来了问题,因为我打算删除这个人MyCell:0x7fc5de55c060。

    那么有什么线索吗?谢谢!

1 个答案:

答案 0 :(得分:0)

问题解决了。 这是因为我在MyCell中覆盖了hittest。 我没想到删除的单元格仍然是集合视图的子视图。