Question

Anyone has ever come into the problem that UITableView need long press to trigger the didSelectRowAtIndexPath method?

Was it helpful?

Solution

If you have used any gesture recognizer try to removing it and check if it causing the problem or not ?

Other wise

Not sure but The problem might be in the UITableView has delaysContentTouches turned ON. Turn this OFF so touches get through to the cells faster.

OTHER TIPS

In my situation I had a UITapGestureRecognizer on my view for hiding my keyboard.

This solved the problem:

tap.cancelsTouchesInView = false

I had exactly the same trouble :

  • I used the Tap Gesture recognizer to manage different action in my View Controller
  • I wanted a classic tap (short click) to trigger the didSelectRowAtIndexPath method but just a long press working by default

My solution to select a cell in Table View by a short tap (press) :

  • Select your Tap Gesture recognizer in your Story Board
  • Go to the attributes inspector and deselect "Canceled in view"

You have to add UILongPressGesture to your cell's view and on fire just call didSelectRowAtIndexPath (better will be to call another method - not standard UITableViewDelegate's method) from your class that adopts UITableViewDelegate.

I will suggest You create own protocol, inherited from UITableViewDelegate, add there method for long press behavior method and enjoy. Something similar to:

@protocol LongPressTableViewCellDelegate <UITableViewDelegate>
- (void)tableView:(UITableView *)tableView didLongTapCell:(UITableViewCell *)cell;
@end

Your delegate in this case would adopt not standard UITableViewDelegate, but this one. Also You have to create own cell (inherited from UITableViewCell) and add there delegate property (id ) that will be used when long press fired.

Also there can be situation that standard didSelectRowAtIndexPath will be fired before your long press will fire, so I suggest you to disable standard selection behavior for table view:

_tableView.allowsSelection = NO;
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top