0

如何从 UITableViewController 中的 UITableViewCell 接收 TouchesBegan,以便知道用户何时触摸某个单元格?

4

2 回答 2

3

当您触摸 a 单元格时,它会突出显示;当它变为YES(用户触摸)或NO(用户离开)时,尝试setHighlighted:在子类中覆盖以调整您的外观。UITableViewCell

(覆盖touchesBegan:withEvent:也可以,但它更易于使用setHighlighted:以便在您不再触摸时进行捕捉;否则您需要覆盖touchesEnded:withEvent:and touchesCancelled:withEvent:)。

于 2012-06-26T00:47:11.613 回答
1

如果您正在寻找用户点击单元格时触发的事件,但在正式选择之前,有以下UITableViewDelegate方法:

- (NSIndexPath *)tableView:(UITableView *)tableView willSelectRowAtIndexPath:(NSIndexPath *)indexPath

从文档中:

直到用户触摸一行然后抬起手指时才会调用此方法;直到那时该行才被选中,尽管它在触地时突出显示。您可以使用 UITableViewCellSelectionStyleNone 来禁用触摸时单元格突出显示的外观。当表格视图处于编辑模式(即表格视图的编辑属性设置为 YES)时,不会调用此方法,除非表格视图允许在编辑期间进行选择(即,表格视图的 allowSelectionDuringEditing 属性为设置为是)。

编辑

为了实现您正在寻求的行为,我相信您需要子类UITableViewCell化并实现该方法

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event

您可以在所有 UIView 子类的UIResponder类参考中找到有关事件处理的更多信息。

于 2012-06-25T18:53:21.317 回答