9

我有一个 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。

4

2 回答 2

13

如果您的单元格在笔尖中,请确保根对象是 UITableViewCell 而不是 UIView

以 UITableViewCell 为根的笔尖

于 2014-03-31T17:33:21.693 回答
4

我建议你通过这个链接。它清楚地描述了您的问题。但是,我试图提取所需的信息。

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

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

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

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

于 2014-01-31T16:14:22.510 回答