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