我正在创建一个网格布局UICollectionView
,但只有当我按下图像时,滚动似乎才起作用。如果我按下空白区域,视图不会滚动。如何为背景和图像上的印刷机启用滚动?
例如,在下面的屏幕截图中,只有当我按下白色方块时滚动才有效,但当我按下方块之间的黑色时滚动无效。
我认为我没有任何滚动特定代码,但如果您希望我添加特定代码示例,请告诉我。
我正在创建一个网格布局UICollectionView
,但只有当我按下图像时,滚动似乎才起作用。如果我按下空白区域,视图不会滚动。如何为背景和图像上的印刷机启用滚动?
例如,在下面的屏幕截图中,只有当我按下白色方块时滚动才有效,但当我按下方块之间的黑色时滚动无效。
我认为我没有任何滚动特定代码,但如果您希望我添加特定代码示例,请告诉我。
如果您设置backgroundColor
or backgroundView
,UICollectionView
当触摸视图中的任何位置(包括示例中的白色方块之间)时,它将滚动。
最后我解决了这个问题。这是我所做的:
我注意到问题是我的 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];
}
希望这对你有帮助!