user2276670
user2276670

Reputation: 11

UITableViewCell Does not respond to the responder chain

I encountered a problem during the development, I have a UITableViewCell, it adds a UIButton (UIButton was full of the Cell), I hope my UIButton response my touchupinside event, after processing is completed, the events send up again, until the Cell to response didSelectRowAtIndexPath method.but now,didSelectRowAtIndexPath didn't work? (note: I don't want to manually call didSelectRowAtIndexPath method, I hope that through the responder chain to solve this problem)

Upvotes: 1

Views: 312

Answers (1)

Mundi
Mundi

Reputation: 80273

If the button is smaller than the cell, it should work as expected: if you touch the button, the button handler fires, if you touch another area in the cell, didSelectRowAtIndexPath fires.

If, however, the button covers the entire cell, this is a non-issue. You can call the same routine from the button handler as from the table view delegate.

- (void)tableView:(UITableView *)tableView 
    didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
   [self doCellThingWithIndexPath:indexPath];
}

- (void)buttonAction:(UIButton*)sender {
    // do whatever the button does, then
    CGRect buttonFrame = [button convertRect:sender.bounds toView:self.tableView];
    NSIndexPath *indexPath = [self.tableView 
                              indexPathForRowAtPoint:buttonFrame.origin];
    [self doCellThingWithIndexPath:indexPath];
}

Upvotes: 1

Related Questions