didSelectRowAtIndexPath:仅在约3秒后保持在单元格上被调用

时间:2012-12-28 03:48:24

标签: ios uitableview didselectrowatindexpath

我从nib加载我的单元格,这是UITableViewCell的子类。

设置每个单元格时userInteraction设置为YES(在nib文件中)。

点击一个单元格时,除非暂停一段时间,否则不会显示单元格的选择(在本例中为灰色)。

即使显示了单元格选择样式,手指离开单元格仍然不会触发didSelectRowAtIndexPath:

如上所述,解雇它的唯一方法是按住牢房约3秒钟。

有谁知道为什么会这样?所有委托都设置正确,我也使用加载单元格的出列方法。

感谢您的任何建议和指示!

编辑2

道歉,误解了取消选择的方法。他们在这里工作:

2012-12-28 04:20:28.120 myApp[2022:907] willSelectRowAtIndexPath: <NSIndexPath 0x1cda0400> 2 indexes [0, 0]
2012-12-28 04:20:28.130 myApp[2022:907] didSelectRowAtIndexPath: <NSIndexPath 0x1cda0400> 2 indexes [0, 0]

2012-12-28 04:20:32.166 myApp[2022:907] willSelectRowAtIndexPath: <NSIndexPath 0x1d936630> 2 indexes [1, 0]
2012-12-28 04:20:32.168 myApp[2022:907] willDeselectRowAtIndexPath: <NSIndexPath 0x1cd24770> 2 indexes [0, 0]
2012-12-28 04:20:32.171 myApp[2022:907] didDeselectRowAtIndexPath: <NSIndexPath 0x1cd24770> 2 indexes [0, 0]
2012-12-28 04:20:32.178 myApp[2022:907] didSelectRowAtIndexPath: <NSIndexPath 0x1d936630> 2 indexes [1, 0]

tableView:cellForRowAtIndexPath:

if (indexPath.section == 0) {
    CustomCell *cell = (CustomCell *)[tableView dequeueReusableCellWithIdentifier:@"CellID"];

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

    NSArray *data = [[self.indexedData objectForKey:kIndexedDataKey] objectAtIndex:indexPath.row];
    CustomObject *dataObject = [data objectAtIndex:0];

    [cell setDataObject:dataObject];

    return cell;
}

自定义单元格属性:

enter image description here

(单元格的)所有子视图都具有相同的属性:

enter image description here

2 个答案:

答案 0 :(得分:3)

正如我觉得的那样愚蠢,正如@NJones所说,我UITapGestureRecognizer附加了UITableView。当我删除它时,它工作正常。

答案 1 :(得分:0)

这个话题有点陈旧,但我遇到了同样的问题:

对我来说,问题是因为我的UITableView已添加到UIScrollView,更具体地说是添加到contentView。 似乎在contentView内部,我必须按住2-3秒才能触发didSelectRowAtIndexPath方法。

我将TableView移至self.view而不是contentView,它解决了问题!