Q: didSelectRowAtIndexPath not being called, i have tried every method on overflow, any other reason can cause this bug? I have checked out every similar question and every answer,I have implemented with code. I have set 
self.tableView.allowsMultipleSelection = NO;
self.tableView.allowsSelection = YES;
self.tableView.userInteractionEnabled = YES;

Check out  the method name of what i expect of is didSelectRowAtIndexPath . There is 
no UITapGestureRecognizer.UI Hierarchy shows nothing on the cell.
I have not implemented the  method: willSelectRowAtIndexPath, shouldHighlightRowAtIndexPath, tableView:didDeselectRowAtIndexPath.
My custom cell is clean without xib.
Tapping the cell doesn't work ,but dragging the cell works and calls  didSelectRowAtIndexPath.
Is there anyone know any other reason that can cause this bug?
wired! I have try take this UITableViewController into a demo and show, but in this demo it worked. Maybe some method in my project block didSelectRowAtIndexPath. How can find which method has blocked? How can I catch the tap event ,and find out which method has happened

A: If you are using UITableViewController inside a UIViewController, please check if you set the delegate & datasource of the UITableViewController or not.

A: - (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath

check return height is correct. You can set cell backgroundColor to check cell frame.
