多くのセルを含む 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 を取得する方法を教えてください。
少し早いですがお礼を