在UIViewController中接收UITableViewCell的TouchesBegan

时间:2012-06-25 18:50:30

标签: objective-c ios uitableview touchesbegan

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

2 个答案:

答案 0 :(得分:3)

当您触摸一个单元格时,它会突出显示;尝试覆盖setHighlighted:的子类中的UITableViewCell,以便在更改为YES(用户触摸)或NO(用户关闭)时调整外观。

(覆盖touchesBegan:withEvent:也会有效,但更容易使用setHighlighted:以便在您不再触摸时捕获;否则您需要覆盖{{1} }和touchesEnded:withEvent:)。

答案 1 :(得分:1)

如果您正在寻找在用户点按某个单元格时触发的事件,但在正式选择之前触发该事件,则会有UITableViewDelegate方法:

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

来自文档:

  

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

修改

为了实现您所寻求的行为,我相信您需要继承UITableViewCell并实施该方法

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

您可以在UIResponder class reference中找到有关事件处理的更多信息,这是所有UIViews的子类。