I am creating one table view based application. I have created a custom table cell for table, that contains 2 labels, 1 image and 1 button. The table view Data source method is working properly. I am using xib for both custom cell and view controller class and i connect delegate and data source to the file's owner. But the problem is when i select the table row, didSelectRowAtIndexPath is not getting fire. As mentioned the only way to fire it is to hold down on the cell for about 3-4 seconds. Does anyone have any idea why this is happening?
Thanks for any pointers...
Here is my table view methods..
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {     return 1; }  - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {     return [finalAddonsArray count]; }  - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {     static NSString *CellIdentifier = @"Cell";     NewCustomCell *cell = (NewCustomCell*)[tableView dequeueReusableCellWithIdentifier:CellIdentifier];      if (cell == nil) {         NSArray *nib=[[NSBundle mainBundle]loadNibNamed:@"NewCustomCell" owner:self options:nil];         cell=[nib objectAtIndex:0];     }      Addons *addons1=[[Addons alloc]init];     addons1= [finalAddonsArray objectAtIndex:indexPath.row];      if (addons1.data == nil) {         cell.ivCategory.image = [UIImage imageNamed:@"blogo.jpg"];     }     else     {         cell.ivCategory.image=[UIImage imageWithData:addons1.data];     }      cell.lblTitle.text = addons1.name;     if (addons1.price == nil) {         cell.lblPrice.text = nil;     }     else{         cell.lblPrice.text = [NSString stringWithFormat:@"%@ rs",addons1.price];     }     [cell.button addTarget:self                     action:@selector(editButtonPressed:)           forControlEvents:UIControlEventTouchUpInside];      cell.button.tag=indexPath.row;     index = indexPath;     cell.selectionStyle = UITableViewCellSelectionStyleGray;      return cell; }  -(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {     NSLog(@"sjcjksbcjksbcfkebscf1234567890"); } One more thing i am getting that if i am using default UITableViewCell instead of custom cell then also my problem is same, delegate method is not getting fire.
Custom cell properties:


same problem happened with me because I have added a tap gesture recogniser over it. If you have used any gesture recognizer try removing it and check if it causing the problem.
EDIT: Solution as commented by the Ali: If you have used tap gesture you can use [tap setCancelsTouchesInView:NO];
I was faced with a similar issue:
For me, the problem was because my UITableView was added to an UIScrollView and more specifically to its contentView. It appears that inside the contentView, I had to stay press 2-3 sec to fire the didSelectRowAtIndexPath method.
I moved my TableView to self.view instead of contentView and it solved the problem! 
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