【问题标题】:UIButton inside UITableViewCellUITableViewCell 内的 UIButton
【发布时间】:2013-06-25 06:27:36
【问题描述】:

myCustomCell 类中有 2 个 UIButton,它是 UITableViewCell 的子类。

黑色轮廓是由“cellForRowAtIndex”返回的cell(UITableViewCell *)。 此 cell 包含“myCustomCell”作为子视图。 'myCustomCell' 有两个 UIButton 和以下属性:

    backgroundcolor = clearColor 
    opaque = NO

单击单元格中除两个红色框(UI 按钮)之外的任何位置时,我希望触发“didSelectRowAtIndexPath”。 但是如果用户单击 UIButton,则只需要触发目标的选择器,而不是“didSelectRowAtIndexPath”。我怎样才能做到这一点?

【问题讨论】:

  • 可能是您添加了对单元格的视图,并且正在吸收您对单元格的触摸。这只是一个假设。
  • 如果您将目标和操作添加到按钮,它应该可以正常工作。如果您点击按钮,它不应将触摸事件传递给单元格。是否启用了用户交互?
  • @kyuubi- 按钮正在采取行动...?
  • @Kyuubi - Post You 代码...我们猜不出来
  • 为什么要在单元格中自定义单元格子视图?我没听懂!

标签: ios cocoa-touch uitableview uibutton


【解决方案1】:

如果您按照上面提到的方式构建单元格:myCustomCell 表示单元格内的子视图,其中有两个按钮,每个按钮都有动作,这应该如下工作;当您单击按钮时, didSelectRowAtIndexPath 将不起作用,并且按钮将处理触摸事件,因为触摸层次结构将被第一个操作(即按钮)观察到,并且不会继续到 didSelectRowAtIndexPath 和何时您在除按钮之外的所有位置按标签,didSelectRowAtIndexPath 将处理触摸,因为没有观察者处理此触摸事件,它将到达 didSelectRowAtIndexPath

【讨论】:

  • 我设置了 myCustomCell.userInteractionEnabled = NO ,这样标签和其他不必要的元素就不会阻挡“didSelectRowAtIndexPath”的触摸。将此属性设置为“YES”后,触摸会触发正确的选择器。但是现在各种元素都阻塞了“didSelectRowAtIndexPath”。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-05-18
  • 2020-05-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多