【发布时间】:2012-06-25 18:50:29
【问题描述】:
如何从 UITableViewController 中的 UITableViewCell 接收 TouchesBegan,以便知道用户何时触摸某个单元格?
【问题讨论】:
标签: objective-c ios uitableview touchesbegan
如何从 UITableViewController 中的 UITableViewCell 接收 TouchesBegan,以便知道用户何时触摸某个单元格?
【问题讨论】:
标签: objective-c ios uitableview touchesbegan
当您触摸 a 单元格时,它会突出显示;尝试在UITableViewCell 的子类中覆盖setHighlighted: 以在更改为YES(用户触摸)或NO(用户离开)时调整您的外观。
(覆盖touchesBegan:withEvent: 也可以,但更容易使用setHighlighted: 以便在您不再触摸时进行捕捉;否则您需要覆盖touchesEnded:withEvent: 和touchesCancelled:withEvent:)。
【讨论】:
如果您正在寻找用户点击单元格时触发的事件,但在正式选中之前,有UITableViewDelegate 方法:
- (NSIndexPath *)tableView:(UITableView *)tableView willSelectRowAtIndexPath:(NSIndexPath *)indexPath
来自文档:
直到用户触摸一行然后抬起他们的 手指;直到那时该行才被选中,尽管它是 触地时突出显示。您可以使用 UITableViewCellSelectionStyleNone 禁用外观 触地时单元格突出显示。表时不调用此方法 视图处于编辑模式(即表格的编辑属性 view 设置为 YES) 除非表格视图允许在 编辑(即,allowSelectionDuringEditing 属性 表视图设置为 YES)。
编辑
为了实现你所寻求的行为,我相信你需要继承UITableViewCell并实现该方法
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
您可以在UIResponder class reference 中找到有关事件处理的更多信息,所有 UIViews 都来自该子类。
【讨论】: