iOS - indexPathForRowAtPoint nie zwraca poprawnego indexPath o różnej wysokości komórki

Mam UITableView, który zawiera wiele komórek. Użytkownik może rozwinąć komórkę, aby zobaczyć więcej treści w tej komórce, naciskając przycisk rozwijania w tej komórce (tylko 1 komórka może się rozwinąć w czasie):

<code>- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
    if(selectedRowIndex == indexPath.row) return 205;
    else return 60;
}
</code>

W serii ujęć przeciągam UILongPressGesture do przycisku komórki i nazwałem go longPress (komórka jest niestandardowa, ma w niej 2 przyciski, 1 musi rozpoznać LongPressGesture, a druga rozszerzyć wysokość komórki):

<code>@property (retain, nonatomic) IBOutlet UILongPressGestureRecognizer *longPress;
</code>

A w viewDidLoad:

<code>- (void)viewDidLoad
{      
    [longPress addTarget:self action:@selector(handleLongPress:)];
}
</code>

Działa to doskonale, jednak gdy użyję następującego kodu do rozpoznania indeksu komórki, jest źle, gdy jedna komórka jest rozwinięta:

<code>- (void)handleLongPress:(UILongPressGestureRecognizer*)sender {         
    // Get index path
    slidePickerPoint = [sender locationInView:self.tableView];
    NSIndexPath *indexPath= [self.tableView indexPathForRowAtPoint:slidePickerPoint]; 
    // It's wrong when 1 cell is expand and the cell's button I hold is below the expand button
}
</code>

Czy ktoś może mi pokazać, jak uzyskać poprawną indeksację, gdy jest inna wysokość komórki?
Z góry dziękuję

questionAnswers(2)

yourAnswerToTheQuestion