IBAction inside UITableViewCell not called in iOS 9

I figured out the solution, hopefully this answer will save someone else the time.

I inherited this code base and it had some issues. The UITableViewCell's that were not working under iOS 9 were not using UITableViewCell nibs w/ a ContentView. Instead, someone had created a UIView nib and then pointed it to a custom UITableViewCell subclass. The nibs did not have a ContentView and apparently iOS 9 is a little more picky about that. This implementation worked fine under iOS 8 and there were no compiler or runtime errors or warnings.

The solution was to create a new UITableViewCell subclass and let Xcode auto create the nib for it. Then I copied over all of the UI and code from the old nib and pasted it into the ContentView of the new nib. I then had to fix up the constraints and rewire the connections to the custom subclass.


Just add this line in tableView cellForRowAtIndexPath method

cell.contentView.userInteractionEnabled = false;
return cell;

but this is not a proper solution.

iOS 9, puts a content view to a tableViewCell, even though you use a custom cell/xib. The content view being added after the custom cell, it was on top of it.

To solve this properly just replace custom cell/xib's view with UITableviewCell from object library [from where you usually drag&drop UIButton, UILabel, etc...];