Custom buttons in XIB used as Custom UITableViewCell don't respond to taps (ios7)

前端 未结 5 766
野性不改
野性不改 2021-02-05 11:28

So here I am upgrading a working ios6 app to ios7, and now I can\'t receive taps or other actions on custom buttons (or other subviews) inside my tableviewcells.

Edit:

相关标签:
5条回答
  • 2021-02-05 12:09

    Solved with:

    [cell.contentView setUserInteractionEnabled: NO];
    
    0 讨论(0)
  • 2021-02-05 12:10

    Put your button into cell's contentView.

    0 讨论(0)
  • 2021-02-05 12:32

    This happens when your Cell's view in xib file is not a UITableViewCell, but only a UIView. Make sure that that the xib's top view is a UITableViewCell.

    You can easily check it by looking into the first child of the main view inside the interface builder. If the first subview is not "Content View" then you should rebuild the cell with UITableViewCell on the top.

    Also make sure that button is a subview of the "Content View".

    0 讨论(0)
  • 2021-02-05 12:32

    I had a similar problem. I had dragged a UIView into the xib to use as my UITableViewCell. Even though I changed the classname to a subclass of a UITableViewCell in Interface Builder, the events on my buttons still didn't fire. Since it was originally a UIView, IB never knew about contentView and didn't add my controls to it.

    Dragging a "real" UITableViewCell into the xib, changing its class to the one I wanted, and then rewiring up the IBOutlets fixed everything. Didn't need to mess with delaysContentTouches or other properties either.

    Moral of the story: drag the right thing onto your xibs.

    0 讨论(0)
  • 2021-02-05 12:32

    It seems to be that when you use interface builder to customize a cell subclass all the views added are added below the contentView. This is why setting userInteractionEnabled = NO on the content view works, because touch events are allow to pass through.

    I used po [view recursiveDescription] with lldb to determine this.

    0 讨论(0)
提交回复
热议问题