不要通过重新加载collectionViewCell来关闭键盘

问题描述 投票:0回答:3

我有一个

UICollectionView
,其中包含自定义单元格,内部有
UITextView
。 用户可以点击文本字段内的任何文本。当文本字段的高度大于单元格的大小时,单元格会建议集合视图重新加载自身。

-(void)updatedCell:(UICollectionViewCell*)cellToUp{

    NSIndexPath *indexPath = [self.collectionView indexPathForCell:cellToUpdateSize];

    BOOL animationsEnabled = [UIView areAnimationsEnabled];
    [UIView setAnimationsEnabled:NO];
    [self.collectionView reloadItemsAtIndexPaths:[NSArray arrayWithObject:indexPath]];
    [UIView setAnimationsEnabled:animationsEnabled];

}

问题是,当单元格“重新加载”时,键盘会消失并再次显示,而没有任何与之关联的文本字段。 有什么办法可以避免键盘消失吗?

提前致谢。

ios uicollectionview uicollectionviewcell
3个回答
2
投票

您可以覆盖 UICollectionView 上的重新加载功能。

类似:

[super reloadData];
[textView becomeFirstResponder];

0
投票

这样做:

collectionView.collectionViewLayout.invalidateLayout()

-1
投票

嗨,您可以使用

UICollectionView
方法
performBatchUpdates(_:completion:)
来修改相关单元格的高度,而无需重新加载单元格。代码是这样的

    [self.collectionView performBatchUpdates:^{
    UICollectionViewCell *cell = [self.collectionView cellForItemAtIndexPath:[NSIndexPath indexPathForItem:currentRow inSection:currentSection]];
    if (cell) {
        cell.height = [[self.colHeightArray objectAtIndex:currentRow] floatValue];
    }
} completion:^(BOOL finished) {
}];

希望这有帮助。

© www.soinside.com 2019 - 2024. All rights reserved.