【问题标题】:Custom UITableViewCell, button in cell not working自定义 UITableViewCell,单元格中的按钮不起作用
【发布时间】:2014-02-24 09:08:40
【问题描述】:

我有一个 UITableViewController,我正在使用自定义 UITableViewCell。单元格包含图像、标签和按钮。除按钮外,一切都按预期工作。按下按钮时,没有任何反应。只有单元格被选中。

我在 IB 中建立了从按钮到我的自定义 TweetTableViewCell 类的连接。

@property (weak, nonatomic) IBOutlet UIButton *cellFollowButton;
- (IBAction)followButtonTappedonCell:(id)sender;

我在 followButtonTappedonCell 操作中向控制台写入了一些文本。但是当按下按钮时,什么也没有发生。在我看来,某些视图在到达按钮之前会消耗水龙头。为了让它更混乱......当我像这样以编程方式在 UITableViewController 中添加一个按钮时:

[cell.cellFollowButton addTarget:self action:@selector(customActionPressed) forControlEvents:UIControlEventTouchDown];
[cell addSubview:cell.cellFollowButton];

...它只是工作。 我在其他文章中读到禁用“启用用户交互”解决了类似的问题,但在我的情况下并没有。 我敢肯定,在 UITableViewCells 中使用按钮时,许多其他人一定遇到过这个问题。非常感谢任何帮助。

我正在为 iOS 7 使用 Xcode 5。

【问题讨论】:

  • 你试过UIControlEventTouchUpInside而不是UIControlEventTouchDown吗?
  • 是的,它与“UIControlEventTouchUpInside”一起工作。正如我所提到的,以编程方式添加按钮可以正常工作。但是当只使用 IB 将按钮连接到一个动作时,该动作永远不会被调用。

标签: ios ios7 uibutton uitableview tableviewcell


【解决方案1】:

如果您的单元格位于 nib 中,请确保根对象是 UITableViewCell 而不是 UIView

【讨论】:

    【解决方案2】:

    我建议你通过this link。它清楚地描述了您的问题。不过,我已尝试提取所需的信息。

    许多类型的事件都依赖于响应者链来传递事件。响应者链是一系列链接的响应者对象。它从第一响应者开始,到应用程序对象结束。如果第一响应者无法处理事件,它会将事件转发给响应者链中的下一个响应者。

    响应者对象是可以响应和处理事件的对象。 UIResponder 类是所有响应者对象的基类,它不仅为事件处理定义了编程接口,还为常见的响应者行为定义了编程接口。 UIApplication、UIViewController 和 UIView 类的实例是响应者,这意味着所有视图和大多数关键控制器对象都是响应者。

    在您的情况下,当您在 customTableViewCell 类中编写事件方法时,您的方法不会被调用。这是因为,TableViewCell 没有参与 Responder 链。

    接下来,检查您的 Cell 是否“启用了用户交互”。您可以在“属性检查器”的查看部分找到它。

    【讨论】:

    • 感谢您的澄清。当我在 TableViewController 而不是 Cell 中声明操作时,一切都很好。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-09
    • 1970-01-01
    • 2010-11-05
    • 1970-01-01
    • 2023-01-16
    • 2011-11-15
    相关资源
    最近更新 更多