3

我正在创建一个网格布局UICollectionView,但只有当我按下图像时,滚动似乎才起作用。如果我按下空白区域,视图不会滚动。如何为背景和图像上的印刷机启用滚动?

例如,在下面的屏幕截图中,只有当我按下白色方块时滚动才有效,但当我按下方块之间的黑色时滚动无效。

我认为我没有任何滚动特定代码,但如果您希望我添加特定代码示例,请告诉我。

4

2 回答 2

1

如果您设置backgroundColoror backgroundViewUICollectionView当触摸视图中的任何位置(包括示例中的白色方块之间)时,它将滚动。

于 2013-02-27T00:45:00.993 回答
0

最后我解决了这个问题。这是我所做的:

我注意到问题是我的 UICollectionViewCell 有 userInteractionEnabled = YES。我尝试将此值更改为 NO,然后滚动开始工作。UICollectionViewCells 正在拦截触摸并且 Collection 视图滚动不起作用。

但是我有一个附带的问题:一旦我触摸了一个单元格,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 回答