0

我有一个简单的 tableView。如果我点击标签(左侧),didSelectRowAtIndexPath 触发正常。当我点击右侧(文本字段)时它不会触发。

我无法弄清楚我缺少什么。我创建和选择单元格的代码如下:

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];

    if (cell == nil) {
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleValue1 reuseIdentifier:CellIdentifier];

        UITextField *textField = [[UITextField alloc] initWithFrame:CGRectMake(0, 0, 150, 30)];
        textField.delegate = self;
        textField.returnKeyType = UIReturnKeyDone;
        textField.borderStyle = UITextBorderStyleNone;
        cell.accessoryView = textField;
        textField.text = [NSString stringWithFormat:@"%d ", indexPath.row];
    }

    cell.textLabel.text = [NSString stringWithFormat:@"Line %d", indexPath.row];

    return cell;
}

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
    NSLog(@"%s", __FUNCTION__);
    currentIndexPath = indexPath;
    NSLog(@"didSelect currentIndexPath.section is %i", currentIndexPath.section);
    NSLog(@"didSelect currentIndexPath.row is %i", currentIndexPath.row);
}

所有帮助表示赞赏。

4

1 回答 1

2

我很确定这是设计使然。在一行中的 UITextField 内点击不会自动选择该行。如果您的行有附件按钮,点击它们也不会选择该行。

编辑

如果您想知道包含活动 TextField 的 TableViewCell 的索引路径,请将其添加到您的 textFieldShould/DidBeginEditing:

id cellContainingFirstResponder = textField.superview.superview ;
NSIndexPath* indexPathContainingFirstResponder = [self.tableView indexPathForCell:cellContainingFirstResponder] ;
于 2013-02-04T22:59:08.450 回答