Reputation: 11
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
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