自定义UITableViewCell,单元格中的按钮不起作用

时间:2014-01-31 15:42:40

标签: ios ios7 uibutton uitableview tableviewcell

我有一个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中使用按钮时,许多其他人一定遇到过这个问题。任何帮助都非常感谢。

我正在使用Xcode 5 for iOS 7。

2 个答案:

答案 0 :(得分:13)

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

nib with UITableViewCell as root

答案 1 :(得分:4)

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

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

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

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

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