0

セルのUIImageViewでUILongPressGestureRecognizerを使用してUICollectionViewCellのNSIndexPathを取得しようとしていますが、コレクションビューの最初のアイテムに対して正確に機能することがありますが、UICollectionViewをスクロールしてセルを押すと、最初のセルが取得されますUICollectionViewCell のアイテムであり、私が押したものではありません。それ以外の場合は nil を返します。これを修正するにはどうすればよいですか? これはコードです:

-(UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath
{
...
UILongPressGestureRecognizer* longPressRecognizer = [[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(onLongPress:)];
        longPressRecognizer.minimumPressDuration = 1.0;
        [cell.imgView setUserInteractionEnabled:YES];
        [cell.imgView addGestureRecognizer:longPressRecognizer];
...
}

-(void)onLongPress:(UILongPressGestureRecognizer*)gestureRecognizer
{

    if(UIGestureRecognizerStateBegan == gestureRecognizer.state) {
        NSLog(@"began");
        NSLog(@"%2.f %.2f",[gestureRecognizer locationInView:self.view].x,[gestureRecognizer locationInView:self.view].y);
        NSIndexPath *item = [self.collectionView indexPathForItemAtPoint:[gestureRecognizer locationInView:self.view]];
        NSLog(@"%d - %d",item.row,item.section);
        MyCell *cell = (MyCell *)[self.collectionView cellForItemAtIndexPath:item];
        NSLog(@"%@",cell.myLabel.text);
      }
}
4

1 に答える 1