【问题标题】:Receive TouchesBegan of UITableViewCell in UIViewController在 UIViewController 中接收 UITableViewCell 的 TouchesBegan
【发布时间】:2012-06-25 18:50:29
【问题描述】:

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

【问题讨论】:

    标签: objective-c ios uitableview touchesbegan


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

      如果您正在寻找用户点击单元格时触发的事件,但在正式选中之前,有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 都来自该子类。

      【讨论】:

      • 这就是我想要的,但不完全是。当您将手指放在常规单元格上时,它会被选中(蓝色)。在我使用的自定义单元格中,此选择发生在单元格本身下方,因此我禁用了它,将样式设置为“无”。我想在用户触摸单元格时准确地调用一个方法。您建议的这种方法仅在用户选择单元格后触发,而不是在他将手指放在单元格上时触发。
      • @Sync 我怀疑这就是您想要的,我对我的答案进行了编辑,希望对您有所帮助
      猜你喜欢
      • 2012-06-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-12
      • 1970-01-01
      • 2016-01-20
      • 1970-01-01
      相关资源
      最近更新 更多