2

多くのセルを含む UITableView があります。ユーザーは、このセルの展開ボタンを押してセルを展開し、このセルのコンテンツをさらに表示できます (一度に展開できるセルは 1 つだけです)。

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

ストーリーボードで、UILongPressGesture をセル ボタンにドラッグし、longPress という名前を付けます (セルはカスタムで、2 つのボタンがあり、1 つは LongPressGesture を認識する必要があり、もう 1 つはセルの高さを拡張する必要があります)。

@property (retain, nonatomic) IBOutlet UILongPressGestureRecognizer *longPress;

そしてviewDidLoadで:

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

それは完全に機能しますが、次のコードを使用してセル indexPath を認識すると、1 つのセルが展開されたときに間違っています。

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

セルの高さが異なる場合に正しい indexPath を取得する方法を教えてください。
少し早いですがお礼を

4

2 に答える 2