iphone - 将FirstResponder 重新分配给不再出现在屏幕上的UITableViewCell 上的UITextView

标签 iphone objective-c uitableview uitextfield first-responder

我有一个UITableView,里面有一大堆自定义UITableViewCells。每个 UITableViewCells 中都有一个 UITextView

我遇到的问题是,如果用户触摸 UITextView,它将成为第一个响应者并且键盘会弹出。如果用户随后向下滚动到第一个Responder 所在的 UITableViewCell 不再出现在屏幕上的位置,我将无法访问 UITextView 来关闭它。

我尝试保留(并保留)对 UITextView 的引用,但是一旦它离开屏幕并且我尝试访问它,我就会得到 EXC_BAD_ACCESS 。无论我保留它多少次,这种情况都会发生,所以我怀疑它可能直接调用了 dealloc (我不确定单元出队系统实际上是如何工作的)。

另一个奇怪的事情是,如果我将 UITextField 滚动到屏幕之外,键盘仍然可以用来写入它,并且当我滚动回 时,输入的文本是可见的。 UITextField.

任何帮助将不胜感激。

最佳答案

Fluchtpunkt 绝对正确,我没有正确地重复使用我的细胞。我的问题是我使用以下方法从 Nib 加载自定义 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];
}

我没有意识到我必须将 .xib 文件中自定义单元格的标识符字段设置为 CustomCell。一旦我的单元格被正确地重新使用,UITextField 在其时间之前被释放的问题就消失了。

关于iphone - 将FirstResponder 重新分配给不再出现在屏幕上的UITableViewCell 上的UITextView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5000785/

相关文章:

ios - 无法创建 PDF 和打印超过 60 页(内存升高和崩溃)

iphone - 如何将多个 NSIndexPath 添加到 NSMutableArray

iphone - ios 中的 NSDate 转换

objective-c - 如何声明由可变类型支持的不可变属性?

iphone - 缩放整个 View Controller

ios - UICollectionView 在 unhighlightAllItems 上崩溃

ios - 突出显示 UITableView 而不选择

iPhone,将带有 "renderInContext"的图像保存到设备时,图像模糊?

ios - 从UIColor数组设置单元格背景

ios - UISearchDisplayController 可以在开始搜索之前显示数据吗