iOS - indexPathForRowAtPoint gibt nicht den richtigen indexPath mit unterschiedlicher Zellenhöhe zurück

Ich habe UITableView, das viele Zellen enthält. Der Benutzer kann die Zelle erweitern, um mehr Inhalt in dieser Zelle zu sehen, indem er auf die Erweiterungsschaltfläche in dieser Zelle drückt (es kann jeweils nur 1 Zelle erweitert werden):

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

Im Storyboard ziehe ich UILongPressGesture in die Zellenschaltfläche und nenne sie longPress (Zelle ist benutzerdefiniert, sie enthält 2 Schaltflächen, eine muss LongPressGesture erkennen, die andere die Zellenhöhe erweitern):

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

Und in der viewDidLoad:

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

Es funktioniert einwandfrei, aber wenn ich folgenden Code verwende, um cell indexPath zu erkennen, ist es falsch, wenn eine Zelle erweitert wird:

<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>

Kann mir jemand bitte zeigen, wie ich den korrekten Indexpfad erhalte, wenn die Zellenhöhe unterschiedlich ist?
Danke im Voraus

Antworten auf die Frage(2)

Ihre Antwort auf die Frage