如何从 UITableViewController 中的 UITableViewCell 接收 TouchesBegan,以便知道用户何时触摸某个单元格?
2 回答
当您触摸 a 单元格时,它会突出显示;当它变为YES(用户触摸)或NO(用户离开)时,尝试setHighlighted:
在子类中覆盖以调整您的外观。UITableViewCell
(覆盖touchesBegan:withEvent:
也可以,但它更易于使用setHighlighted:
以便在您不再触摸时进行捕捉;否则您需要覆盖touchesEnded:withEvent:
and touchesCancelled:withEvent:
)。
如果您正在寻找用户点击单元格时触发的事件,但在正式选择之前,有以下UITableViewDelegate
方法:
- (NSIndexPath *)tableView:(UITableView *)tableView willSelectRowAtIndexPath:(NSIndexPath *)indexPath
从文档中:
直到用户触摸一行然后抬起手指时才会调用此方法;直到那时该行才被选中,尽管它在触地时突出显示。您可以使用 UITableViewCellSelectionStyleNone 来禁用触摸时单元格突出显示的外观。当表格视图处于编辑模式(即表格视图的编辑属性设置为 YES)时,不会调用此方法,除非表格视图允许在编辑期间进行选择(即,表格视图的 allowSelectionDuringEditing 属性为设置为是)。
编辑
为了实现您正在寻求的行为,我相信您需要子类UITableViewCell
化并实现该方法
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
您可以在所有 UIView 子类的UIResponder
类参考中找到有关事件处理的更多信息。