2011-02-15 39 views
2

我有一個UITableView與一大堆的自定義UITableViewCells在其中。其中每個UITableViewCells都有一個UITextViewresignFirstResponder UITableViewCells不再在屏幕上的UITextViews

我遇到的問題是,如果用戶觸摸UITextView,那將成爲第一個響應者,並且彈出鍵盤。如果用戶然後滾動到第一個響應者所在的UITableViewCell不再位於屏幕上的位置,則我無法取消UITextView來解除它。

我試着拿着(和保留)對UITextView的引用,但是一旦它離開屏幕,我嘗試訪問它,我得到一個EXC_BAD_ACCESS。無論我保留多少次,都會發生這種情況,所以我懷疑它可能會直接調用dealloc(我不確定單元出隊系統是如何工作的)。

另一個奇怪的是,如果我滾動屏幕上的UITextField,鍵盤仍可用於寫入,並且當我滾動回到UITextField時,鍵入的文本可見。

任何幫助將不勝感激。

+0

聽起來像你不能正確地重用你的單元格 – 2011-02-15 08:03:33

+0

你能否提供一些關於使用自定義UITableViewCells的建議? – user1072689 2011-02-15 23:48:38

回答

0

您可以保存用戶正在編輯的單元格的indexPath。然後當他滾動測試時,如果該單元格在tableView的可見單元格中。如果沒有從該單元格獲取文本字段並關閉鍵盤。

UITableViewCell *editingCell = [self.tableView cellForRowAtIndexPath:SavedIndexPath]; 
[editingCell.textField resignFirstResponder]; 
1

Fluchtpunkt是絕對正確的,我沒有正確地重新使用我的細胞。我的問題是,我用的方法加載我的自定義UITableViewCells從筆尖:

static NSString *CellIdentifier = @"CustomCell"; 
ExpandingTableViewCell *cell = (ExpandingTableViewCell *)[tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 

if (cell == nil) { 
    NSArray *nib = [[NSBundle mainBundle] loadNibNamed:@"ExpandingTableViewCell" owner:self options:nil]; 
    cell = (ExpandingTableViewCell *)[nib objectAtIndex:0]; 
} 

我不知道,我必須設置自定義單元格CustomCell的的.xib文件標識符字段。一旦我的單元格被正確地重新使用,UITextField的問題在它的時間消失之前被解除分配。

相關問題