3

でグリッド レイアウトを作成していますUICollectionViewが、画像を押した場合にのみスクロールが機能するようです。空白のスペースを押しても、ビューはスクロールしません。背景と画像の両方にあるプレスのスクロールを有効にするにはどうすればよいですか?

たとえば、下のスクリーンショットでは、白​​い四角を押した場合にのみスクロールが機能しますが、四角の間の黒い部分を押した場合は機能しません。

スクロール固有のコードはないと思いますが、特定のコード サンプルを追加してほしい場合はお知らせください。

4

2 に答える 2

1

backgroundColorのまたはbackgroundViewを設定するUICollectionViewと、ビュー内の任意の場所 (例の白い四角の間を含む) に触れるとスクロールします。

于 2013-02-27T00:45:00.993 に答える
0

最後に、この問題を解決しました。これが私がしたことです:

問題は、UICollectionViewCell に userInteractionEnabled = YES があることに気付きました。この値を NO に変更しようとすると、スクロールが機能し始めました。UICollectionViewCells がタッチをインターセプトし、コレクション ビューのスクロールが機能しませんでした。

しかし、付随的な問題がありました。セルに触れると、didSelectItemAtIndexPath メソッドが呼び出されませんでした。

私の解決策は、UITapGestureRecognizer を追加して、セルがタッチされたかどうかを検出し、このメソッドを手動で呼び出すことです。

これを viewDidLoad メソッドに追加します。

UITapGestureRecognizer *singleTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(singleTapGestureCaptured:)];
[self.collectionView addGestureRecognizer:singleTap];

そして、ここに singleTapGestureCaptured メソッドがあります:

- (void)singleTapGestureCaptured:(UITapGestureRecognizer *)gesture
{
    CGPoint touchPoint=[gesture locationInView:self.collectionView];
    NSIndexPath* indexPath = [self.collectionView indexPathForItemAtPoint:touchPoint];
    [self collectionView:self.collectionView didSelectItemAtIndexPath:indexPath];
}

これがあなたを助けることを願っています!

于 2013-08-01T00:31:08.133 に答える