2014-07-14 68 views
1

我有一個UICollectionView與自定義單元格中有一個UITextView裏面。 用戶可以點擊文本字段中的任何文本。當文本字段的高度比單元格的大小大時,單元格建議集合視圖重新加載自身。不要解僱鍵盤重新加載collectionViewCell

-(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]; 

} 

的問題是,當細胞是「重裝」,鍵盤被解僱,並沒有任何相關的文本字段中再次露面。 有沒有解決方案可以避免解除鍵盤鎖定?

在此先感謝。

回答

2

你可以在你的UICollectionView上覆蓋重載功能。

喜歡的東西:

[super reloadData]; 
[textView becomeFirstResponder]; 
+0

你能提供一個更好的解釋嗎?我無法在UICollectionViewCell中找到重載功能。細胞如何知道這應該是第一個響應者?謝謝 – DaSilva

+0

對不起,我的意思是UICollectionView上的重載功能。我編輯了我的答案。 您必須跟蹤哪個單元格自己擁有鍵盤。然後,在重載函數中,獲取該單元的textView並將其設置爲第一響應者。 – Alexander

+0

仍然沒有找到「重新加載方法」..與您的意見,我可以在cellForItemAtIndexPath? – DaSilva

-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) { 
}]; 

希望得到這個幫助。