Ios UITableViewCell的UITextField不是cellForRowAtIndexPath中调用的第一响应程序:
我有一个UITableViewController,显示50个项目。这是一个普通的表视图,它使用value1单元格类型。当我点击一行时,我会向该单元格添加一个UITextField(它有一个明亮的绿色背景用于调试)。在这一点上,我还没有让它成为第一反应者。现在,如果我滚动表格视图,一切正常。正如人们所预料的那样,带有亮绿色文本字段的单元格将被排队并重新使用,并随机出现在其他单元格中 当我将该文本字段作为第一响应者时,发生了两件有趣的事情Ios UITableViewCell的UITextField不是cellForRowAtIndexPath中调用的第一响应程序:,ios,objective-c,uitableview,Ios,Objective C,Uitableview,我有一个UITableViewController,显示50个项目。这是一个普通的表视图,它使用value1单元格类型。当我点击一行时,我会向该单元格添加一个UITextField(它有一个明亮的绿色背景用于调试)。在这一点上,我还没有让它成为第一反应者。现在,如果我滚动表格视图,一切正常。正如人们所预料的那样,带有亮绿色文本字段的单元格将被排队并重新使用,并随机出现在其他单元格中 当我将该文本字段作为第一响应者时,发生了两件有趣的事情 我可以滚动一整天,而且这个单元永远不会被排队和重用 对于具
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
NSLog(@"indexPath= %@", indexPath);
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleValue1 reuseIdentifier:CellIdentifier];
}
cell.textLabel.text =[NSString stringWithFormat:@"Label %@", self.items[indexPath.row]];
cell.selectionStyle = UITableViewCellSelectionStyleNone;
return cell;
}
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
UITableViewCell *cell = [self.tableView cellForRowAtIndexPath:indexPath];
[cell addSubview:self.textFieldForEditing];
//[self.textFieldForEditing becomeFirstResponder];
}
我如何使文本字段成为第一响应者并不重要。无论是取消对didSelectRowAtIndexPath:中的行的注释,还是点击文本字段。不管怎样,都是同样的行为
从某种角度来看,这种行为是方便的。为了防止文本字段出现在不应该出现的地方,没有必要实现出列管理代码
但我在任何地方都找不到这种行为的记录。这正常吗 是的,我认为这很正常。它有键盘焦点,因此对它有某种“强”引用,这可以防止它退出队列。