iOS: indexPathForRowAtPoint no devuelve indexPath correcto con diferente altura de celda

Tengo UITableView que contiene muchas células. El usuario puede expandir la celda para ver más contenido en esta celda presionando el botón de expansión en esta celda (solo 1 celda puede expandirse a la vez):

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

En el guión gráfico, arrastro UILongPressGesture al botón de la celda y lo denomino longPress (la celda es personalizada, tiene 2 botones, necesito reconocer LongPressGesture, la otra altura de la celda de expansión):

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

Y en el viewDidLoad:

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

Funciona perfectamente, sin embargo, cuando uso el siguiente código para reconocer cell indexPath, es incorrecto cuando una celda se expande:

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

¿Alguien puede mostrarme cómo obtener la indexPath correcta cuando hay una altura de celda diferente?
Gracias de antemano

Respuestas a la pregunta(2)

Su respuesta a la pregunta