简体   繁体   中英

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)

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];
}

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM