Just in case someone made the same stupid mistake as I did:
Check out if the method name of what you expect of being didSelect
may accidentally be gotten didDeselect
in some way. It took about two hours for me to find out ...
Another thing that might lead to the issue is not selected selection kind:
Should be Single Selection
for normal selection, should not be No Selection
.
To do this programmatically, do:
tableView.allowsSelection = YES
Another possibility is that a UITapGestureRecognizer could be eating the events, as was the case here: https://stackoverflow.com/a/9248827/214070
I didn't suspect this cause, because the table cells would still highlight blue as if the taps were getting through.
All good answers, but there's one more to look out for...
(Particularly when creating a UITableView programmatically)
Make sure the tableView can respond to selection by setting [tableView setAllowsSelection:YES];
or removing any line that sets it to NO
.
It sounds like perhaps the class is not the UITableViewDelegate
for that table view, though UITableViewController
is supposed to set that automatically.
Any chance you reset the delegate to some other class?
If the problem arise with UITapGestureRecognizer
you can fix this:
in code with Objective-C
:
UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(dismissKeyboard)];
[self.view addGestureRecognizer:tap];
[tap setCancelsTouchesInView:NO];
in code with Swift
:
let tap = UITapGestureRecognizer(target: self, action:Selector("dismissKeyboard"))
view.addGestureRecognizer(tap)
tap.cancelsTouchesInView = false
I have encountered two things in this situations.
You may have forgot to implement UITableViewDelegate protocol, or there's no delegation outlet between your class and your table view.
You might have a UIView inside your row that is a first responder and takes your clicks away. Say a UIButton or something similar.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With